给出的是来自kotlin-test github docs的示例,但我在这里没有看到 beforeEach 或 beforeClass 概念。我想明白,
class MyTests : StringSpec({
"length should return size of string" {
"hello".length shouldBe 5
}
"startsWith should test for a prefix" {
"world" should startWith("wor")
}
})
Run Code Online (Sandbox Code Playgroud)
mon*_*ack 10
与您自己的答案@JTeam 非常相似,但使用 init {} 构造函数块来声明您的测试,然后您可以直接在类中覆盖方法。
class MyTest : StringSpec() {
override fun beforeTest(description: Description) {
super.beforeTest(description)
println("Before every spec/test case")
}
override fun beforeSpec(description: Description, spec: Spec) {
super.beforeSpec(description, this)
println("Before every test suite")
}
override fun afterTest(description: Description, result: TestResult) {
super.afterTest(description, result)
println("After every spec/test case")
}
override fun afterSpec(description: Description, spec: Spec) {
super.afterSpec(description, spec)
println("After every test suite")
}
init {
"test should run " {
"Hello".shouldHaveLength(4)
}
"test2 should run " {
"Hello World".shouldHaveLength(10)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在较新的版本中Kotest(我认为从 4.0.0 开始)有生命周期函数TestCofiguration,并且不再需要 init 块:
import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.string.shouldHaveLength
class MyTest : StringSpec({
beforeTest {
println("Before every spec/test case")
}
beforeSpec {
println("Before every test suite")
}
afterTest {
println("After every spec/test case")
}
afterSpec {
println("After every test suite")
}
"test 1 " {
println("run test 1")
"Hello" shouldHaveLength 4
}
"test 2 " {
println("run test 2")
"Hello World" shouldHaveLength 10
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |