在JUnit中,您可以使用@ClassRule注释静态字段.我怎么能在Kotlin做到这一点?
我试过了:
object companion {
@ClassRule @JvmStatic
val managedMongoDb = ...
}
and
object companion {
@ClassRule @JvmField
val managedMongoDb = ...
}
Run Code Online (Sandbox Code Playgroud)
但最后一个都没有,因为规则没有执行.
我仔细检查了完全相同的规则在没有静态上下文的情
@Rule @JvmField
val managedMongoDb = ...
Run Code Online (Sandbox Code Playgroud)
Jay*_*ard 25
您没有正确使用伴随对象.您正在声明一个对象(类的单个实例),companion
而不是创建companion object
一个类的内部.因此,无法正确创建静态字段.
class TestClass {
companion object { ... }
}
Run Code Online (Sandbox Code Playgroud)
与以下内容截然不同:
class TestClass {
object companion { ... } // this is an object declaration, not a companion object
}
Run Code Online (Sandbox Code Playgroud)
虽然两者都是有效的代码.
这是@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...")
}
}
Run Code Online (Sandbox Code Playgroud)
这输出:
测试前的 ClassRule
...
ClassRule之后
归档时间: |
|
查看次数: |
3349 次 |
最近记录: |