考虑以下用于 BeforeAndAfter
和 BeforeAndAfterAll
的最小可行自包含测试用例:
import org.scalatest.{BeforeAndAfter, BeforeAndAfterAll, FunSuite}
class BeforeAndAfterTestTest extends FunSuite with BeforeAndAfter with BeforeAndAfterAll {
override protected def beforeAll(): Unit = println("beforeAll")
override protected def afterAll(): Unit = println("afterAll")
override protected def before(fun: => Any)(implicit pos: Position): Unit = {
println("before")
}
override protected def after(fun: => Any)(implicit pos: Position): Unit = {
println("after")
}
test("hello1") { println("hello1") }
test("hello2") { println("hello2") }
}
通过 scalatest
运行的结果是:
所以:
before/afterAll
do 执行之前/之后
做不
调用 before
和 after
方法需要什么?
最佳答案
您应该调用之前
和之后
,而不是覆盖它们:
import org.scalatest.{BeforeAndAfter, BeforeAndAfterAll, FunSuite}
class BeforeAndAfterTestTest extends FunSuite with BeforeAndAfter with BeforeAndAfterAll {
override protected def beforeAll(): Unit = println("beforeAll")
override protected def afterAll(): Unit = println("afterAll")
before {
println("before")
}
after {
println("after")
}
test("hello1") { println("hello1") }
test("hello2") { println("hello2") }
}
参见文档 here
如果你想要可覆盖的方法,你应该使用BeforeAndAfterEach
,而不是BeforeAndAfter
(doc)
关于scala - 何时在具有 BeforeAndAfter 特性的 ScalaTest 类中调用 before() 和 after(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48753284/