kotlin kotest/kotlintest Behavior Spec afterSpec/finalizeSpec调用太频繁或根本不调用

kotlin kotest/kotlintest Behavior Spec afterSpec/finalizeSpec调用太频繁或根本不调用,kotlin,micronaut,kotlintest,kotest,Kotlin,Micronaut,Kotlintest,Kotest,我有一个kotlin kotest(以前称为kotlintest)行为规范 一个给定(“…”,多个当(“…”)时,然后(“…”) 我想在整个规范(分别是给定的每个子句)完成后执行清理 @MicronautTest class StructurePersistSpec( private val iC : InstancesC ) : BehaviorSpec({ // afterSpec { finalize

我有一个kotlin kotest(以前称为kotlintest)行为规范

一个
给定(“…”
,多个
当(“…”)时,然后(“…”

我想在整个规范(分别是给定的每个
子句)完成后执行清理

    @MicronautTest
    class StructurePersistSpec(
            private val iC : InstancesC
    ) : BehaviorSpec({
    
        // afterSpec {
        finalizeSpec {
            cleanup()
        }

        Given("...") {
            When("...") {
                Then("...") {
                ...
                }
                Then("...") {
                ...
                }
            }
            When("...") {
                Then("...") {
                ...
                }
                Then("...") {
                ...
                }
            }
        }   
   ...
   }
在使用
afterSpec{}
时,我得到了
afterSpec{}
子句的多个调用(调用量
When
s??),而不仅仅是在规范完成后(或给定的/each
子句完成后)调用一个

使用
finalizeSpec{}
时,根本不会调用它(它内部的断点永远不会被命中)

我做错了什么


或者我错过了
行为规范
s的一些奇特特性吗?

您收到多个调用的原因可能是您为测试设置了不同的
隔离模式

这意味着您的规范将在每次测试中重新创建(然后清理)。为了从框架中调用单个
afterSpec
,必须将
IsolationMode
设置为
SingleInstance

请记住,这可能会影响测试的执行方式,从而影响测试的有效性或通过能力


文档:

您收到多个调用的原因可能是您为测试设置了不同的
隔离模式

这意味着您的规范将在每次测试中重新创建(然后清理)。为了从框架中调用单个
afterSpec
,必须将
IsolationMode
设置为
SingleInstance

请记住,这可能会影响测试的执行方式,从而影响测试的有效性或通过能力


文档:

您是否在项目/测试配置中覆盖了
隔离模式
?您是否在项目/测试配置中覆盖了
隔离模式