如何使用 JUnitRunner 在 ScalaTest 中使用 JUnit4 生命周期回调?
How to make JUnit4 lifecycle callbacks work in ScalaTest with JUnitRunner?
根据 ScalaTest 文档 it's possible to use JUnitRunner 到 运行 测试。我的假设是,如果它 运行s 与 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
class 依赖于 JUnit 回调。我找到了这个问题的解决方法:
var testBrowser : TestBrowser = _
before {
new WithBrowser {
override def createBrowser(): Unit = {
super.createBrowser()
testBrowser = browser
}
}.createBrowser()
}
但我认为它很丑陋,我怀疑有更好的方法。
所以,我的问题是是否可以使这些 JUnit 生命周期回调与 ScalaTest 一起工作?如果可能的话,该怎么做?
您应该可以使用 JUnitSuite
而不是 FunSuite
来完成此操作。文档在这里:
http://www.scalatest.org/getting_started_with_junit_4_in_scala
http://doc.scalatest.org/2.2.4/index.html#org.scalatest.junit.JUnitSuite
我按照 Noah 的建议做了,并且成功了。以防万一有人在 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")
}
}
根据 ScalaTest 文档 it's possible to use JUnitRunner 到 运行 测试。我的假设是,如果它 运行s 与 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
class 依赖于 JUnit 回调。我找到了这个问题的解决方法:
var testBrowser : TestBrowser = _
before {
new WithBrowser {
override def createBrowser(): Unit = {
super.createBrowser()
testBrowser = browser
}
}.createBrowser()
}
但我认为它很丑陋,我怀疑有更好的方法。
所以,我的问题是是否可以使这些 JUnit 生命周期回调与 ScalaTest 一起工作?如果可能的话,该怎么做?
您应该可以使用 JUnitSuite
而不是 FunSuite
来完成此操作。文档在这里:
http://www.scalatest.org/getting_started_with_junit_4_in_scala http://doc.scalatest.org/2.2.4/index.html#org.scalatest.junit.JUnitSuite
我按照 Noah 的建议做了,并且成功了。以防万一有人在 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")
}
}