gpt4 book ai didi

kotlin - 如何使用 kotlin-test 框架在每次测试之前初始化变量

转载 作者:行者123 更新时间:2023-12-04 21:06:04 26 4
gpt4 key购买 nike

我试图找到一种在每次测试之前设置变量的方法。就像 Junit 中的 @Before 方法一样。通过kotlin-test的文档,我发现我可以使用interceptTestCase()接口(interface)。但不幸的是,下面的代码会触发异常:
kotlin.UninitializedPropertyAccessException: lateinit property text has not been initialized

class KotlinTest: StringSpec() {
lateinit var text:String
init {
"I hope variable is be initialized before each test" {
text shouldEqual "ABC"
}

"I hope variable is be initialized before each test 2" {
text shouldEqual "ABC"
}
}

override fun interceptTestCase(context: TestCaseContext, test: () -> Unit) {
println("interceptTestCase()")
this.text = "ABC"
test()
}
}

我是否以错误的方式使用interceptTestCase()?
非常感谢~

最佳答案

一个快速的解决方案是在测试用例中添加以下语句:override val oneInstancePerTest = false
根本原因是 oneInstancePerTest 默认为 true(尽管在 kotlin 测试文档中为 false),这意味着每个测试场景都将在不同的实例中运行。

在本案中,
初始化interceptTestCase方法在实例 A 中运行,将文本设置为 ABC。然后测试用例在没有 interceptTestCase 的情况下在实例 B 中运行。 .

有关更多详细信息,GitHub 中有一个 Unresolved 问题:
https://github.com/kotlintest/kotlintest/issues/174

关于kotlin - 如何使用 kotlin-test 框架在每次测试之前初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com