我有一个kotlintest(以前叫kotlintest) BehaviorSpec
它下面有一个Given("...")和多个When("...") Then("...")
我想在整个Spec (分别是每个Given子句)完成之后执行一次清理。
@MicronautTest
class StructurePersistSpec(
private val iC : InstancesC
) : BehaviorSpec({
// afterSpec {
finalizeSpec {
cleanup()
}
Given("...") {
When("...") {
Then("...") {
...
}
Then("...") {
...
}
}
When("...") {
Then("...") {
...
}
Then("...") {
...
}
}
}
...
}在使用afterSpec { }时,我得到多个调用(When的数量??)afterSpec { }子句,而不仅仅是在Spec完成(或完成/每个Given子句之后)
在使用finalizeSpec { }时,它根本不会被调用(它里面的断点永远不会被击中)
我做错什么了?
还是我错过了BehaviorSpec的一些奇特的特性?
发布于 2020-09-30 09:12:20
您收到多个电话的原因可能是您为您的测试设置了不同的IsolationMode。
这意味着您的Spec将被重新创建(然后清洗)为每个测试。为了从框架中调用一个afterSpec,必须将IsolationMode设置为SingleInstance。
记住,这可能会影响测试的执行方式,从而影响测试的有效性或通过能力。
https://stackoverflow.com/questions/64120168
复制相似问题