gpt4 book ai didi

junit4 - 在 Kotlin 中使用 @ClassRule

转载 作者:IT老高 更新时间:2023-10-28 13:29:50 25 4
gpt4 key购买 nike

在 JUnit 中,您可以使用 @ClassRule 来注释静态字段。我如何在 Kotlin 中做到这一点?

我试过了:

object companion {
@ClassRule @JvmStatic
val managedMongoDb = ...
}

and

object companion {
@ClassRule @JvmField
val managedMongoDb = ...
}

但最后一个都不起作用,因为没有执行规则。

我仔细检查了完全相同的规则在没有静态上下文的情况下可以正常工作:

@Rule @JvmField
val managedMongoDb = ...

最佳答案

您没有使用 companion objects正确。您正在声明一个名为 companion 的对象(类的单个实例),而不是在类中创建 companion object。因此没有正确创建静态字段。

class TestClass {
companion object { ... }
}

非常不同:

class TestClass { 
object companion { ... } // this is an object declaration, not a companion object
}

虽然两者都是有效代码。

这是使用 @ClassRule 的正确工作示例,在 Kotlin 1.0.0 中测试:

class TestWithRule {
companion object {
@ClassRule @JvmField
val resource: ExternalResource = object : ExternalResource() {
override fun before() {
println("ClassRule Before")
}

override fun after() {
println("ClassRule After")
}
}
}

@Test fun testSomething() {
println("Testing...")
}
}

这个输出:

ClassRule Before
Testing...
ClassRule After

关于junit4 - 在 Kotlin 中使用 @ClassRule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820936/

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