如何在kotlintest 2.x(interceptSpec)中正确初始化共享资源

我试图在单元测试之前的beforeAll / afterAll类型设置中做一个标准,但是有一些问题。 这似乎是interceptSpec功能是我想要的,文件明确提到这是很好的清理数据库资源,但我找不到一个很好的例子。 代码如下:

 class MyTest : StringSpec() { lateinit var foo: String override fun interceptSpec(context: Spec, spec: () -> Unit) { foo = "foo" println("before spec - $foo") spec() println("after spec - $foo") } init { "some test" { println("inside test - $foo") } } } 

这导致下面的输出:

 before spec - foo kotlin.UninitializedPropertyAccessException: lateinit property foo has not been initialized ... stack trace omitted ... after spec - foo