intellij idea - Simple test with Scala Test 1.2 -
i'm trying run test using scala 2.8 in intellij 10 scala test 1.2
i don't know scala syntax, can this code ? :)
package test.ui { import org.scalatest._ import matchers.shouldmatchers import ui._ import observer._ object buttonobserverspecification extends spec { "a button observer should observe button clicks" in { val observablebutton = new observablebutton("okay") val buttonobserver = new buttoncountobserver observablebutton.addobserver(buttonobserver) (i <- 1 3) observablebutton.click() buttonobserver.count should equal (3) } } }
the error :
error: value in not member of java.lang.string "a button observer should observe button clicks" in {
here rest of code :
package ui { abstract class widget class button(val label: string) extends widget { def click() = { println (label + " clicked") } } } package observer { trait subject { type observer = {def receiveupdate(subject: any)} private var observers = list[observer]() def addobserver(observer: observer) = observers ::= observer def notifyobservers = observers foreach (_.receiveupdate(this)) } } package ui { import observer._ class observablebutton(name: string) extends button(name) subject { override def click() = { super.click() notifyobservers } } class buttoncountobserver { var count = 0 def receiveupdate(subject: any) = count += 1 } }
the code book "programming scala" oreilly
i tried updating code scala test 1.2, failed. here original test (notice imports , extended class):
package ui import org.specs._ import observer._ object buttonobserverspec extends specification { "a button observer" should { "observe button clicks" in { val observablebutton = new observablebutton("okay") val buttonobserver = new buttoncountobserver observablebutton.addobserver(buttonobserver) (i <- 1 3) observablebutton.click() buttonobserver.count mustequal 3 } } }
trial number 3 (error no tests found) :
package test.ui { import org.scalatest._ import matchers.shouldmatchers import ui._ import observer._ import org.scalatest.junit.junitrunner import org.junit.runner.runwith @runwith(classof[junitrunner]) object buttonobservertest extends wordspec shouldmatchers { "a button observer" should { "observe button clicks" in { val observablebutton = new observablebutton("okay") val buttonobserver = new buttoncountobserver observablebutton.addobserver(buttonobserver) (i <- 1 3) observablebutton.click() buttonobserver.count should equal (3) } } } }
working test :
package test.ui { import org.scalatest.wordspec import org.scalatest.matchers.shouldmatchers import ui._ import observer._ class buttonobservertest extends wordspec shouldmatchers { "a button observer" should { "observe button clicks" in { val observablebutton = new observablebutton("okay") val buttonobserver = new buttoncountobserver observablebutton.addobserver(buttonobserver) (i <- 1 3) observablebutton.click() buttonobserver.count should equal (3) } } } }
ps : if don't know how run scala tests in intellij, see this blog post - intellij supports scalatest
i think need extend wordspec
shouldmatchers
:
class buttonobserverspec extends wordspec shouldmatchers {...}
you can find more examples here:
Comments
Post a Comment