简单测试使用Scala测试1.2
问题描述:
我想在10的IntelliJ使用Scala测试1.2简单测试使用Scala测试1.2
我不知道很多斯卡拉语法运行使用的Scala 2.8的测试,这样你就可以这段代码帮助吗? :)
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)
for (i <- 1 to 3) observableButton.click()
buttonObserver.count should equal (3)
}
}
}
的错误是:
error: value in is not a member of java.lang.String
"A Button Observer should observe button clicks" in {
这里是代码的其余部分:
package ui {
abstract class Widget
class Button(val label: String) extends Widget {
def click() = {
println (label + " was 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) with Subject {
override def click() = {
super.click()
notifyObservers
}
}
class ButtonCountObserver {
var count = 0
def receiveUpdate(subject: Any) = count += 1
}
}
的代码是从书 “编程斯卡拉” 从奥赖利
我试过了将代码约会到Scala测试1.2,但失败。原来这里是测试(注意进口和扩展分类):
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)
for (i <- 1 to 3) observableButton.click()
buttonObserver.count mustEqual 3
}
}
}
试验序号3(错误是没有找到测试):
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 with ShouldMatchers {
"A Button Observer" should {
"observe button clicks" in {
val observableButton = new ObservableButton("Okay")
val buttonObserver = new ButtonCountObserver
observableButton.addObserver(buttonObserver)
for (i <- 1 to 3) observableButton.click()
buttonObserver.count should equal (3)
}
}
}
}
工作试验:
package test.ui {
import org.scalatest.WordSpec
import org.scalatest.matchers.ShouldMatchers
import ui._
import observer._
class ButtonObserverTest extends WordSpec with ShouldMatchers {
"A Button Observer" should {
"observe button clicks" in {
val observableButton = new ObservableButton("Okay")
val buttonObserver = new ButtonCountObserver
observableButton.addObserver(buttonObserver)
for (i <- 1 to 3) observableButton.click()
buttonObserver.count should equal (3)
}
}
}
}
PS:如果你不知道如何的IntelliJ运行阶测试,看this blog post - IntelliJ Now Supports ScalaTest
答
我认为你需要与ShouldMatchers
延长WordSpec
这样的:
class ButtonObserverSpec extends WordSpec with ShouldMatchers {...}
你可以在这里找到更多的例子:
它运行,但它说没有发现测试... – Belun 2011-02-06 15:19:12