kotlin kotest / kotlintest BehaviorSpec afterSpec / finalizeSpec调用过多或根本不调用

问题描述

我有一个kotlin kotest(以前称为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 { } s ???),而不仅仅是在规范完成后一个(或每个Given条款的结尾)

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

我在做什么错了?

还是我错过了BehaviorSpec的一些特色?

解决方法

接到多个电话的原因可能是您为测试设置了不同的IsolationMode

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

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

文档:https://kotest.io/isolation_mode/

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...