根据ScalaTest文档,可以使用JUnitRunner可以运行测试。我的假设是,如果它与JUnitRunner一起运行,那么它的回调方法(即标记为@Before或@After注释的方法也应该可以工作)。但很明显我的假设是错误的。我创建了一个简单的例子来演示它:
import org.junit.Before
import org.junit.runner.RunWith
import org.scalatest.{FunSuite, _}
import org.scalatest.junit.JUnitRunner
@RunWith(classOf[JUnitRunner])
class Test extends FunSuite {
@Before
def before() = {
println("before test")
}
test("nothing") {
println("test is started")
}
}如果您运行这个示例,您将看到test is started行,而不是before test。
我知道ScalaTest生命周期回调,但问题是我需要让JUnit回调以某种方式工作。我想为Play 2.4应用程序编写一个测试,它的play.test.WithBrowser类依赖于JUnit回调。我找到了解决这个问题的办法:
var testBrowser : TestBrowser = _
before {
new WithBrowser {
override def createBrowser(): Unit = {
super.createBrowser()
testBrowser = browser
}
}.createBrowser()}
但我认为这是相当丑陋的,我怀疑有更好的方法。
因此,我的问题是,是否有可能使这些JUnit生命周期回调与ScalaTest一起工作?如果可能的话,怎么做呢?
发布于 2015-10-03 03:05:20
您应该能够使用JUnitSuite而不是FunSuite来完成这个任务。文件如下:
斯卡拉 http://doc.scalatest.org/2.2.4/index.html#org.scalatest.junit.JUnitSuite
发布于 2015-10-05 20:47:22
我就像诺亚建议的那样成功了。为了防止任何人在Play 2.x和WithBrowser中遇到同样的问题,我最终得到了这样的测试:
class IntegrationSpec extends WithBrowser with JUnitSuiteLike with Matchers {
@Test def workWithBrowser() {
browser.goTo("http://localhost:9000")
browser.pageSource should include("Add Person")
}
}https://stackoverflow.com/questions/32918221
复制相似问题