何时在具有 BeforeAndAfter 特性的 ScalaTest class 中调用 before() 和 after()
When do before() and after() get invoked within a ScalaTest class with BeforeAndAfter trait
考虑以下针对 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
做执行
before/after
做不
调用 before
和 after
方法需要什么?
你应该调用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)
考虑以下针对 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
做执行before/after
做不
调用 before
和 after
方法需要什么?
你应该调用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)