我有一个用 Java
编写的 JUnit 5
测试类,它使用一个注释为 @RegisterExtension
的字段,它工作得很好:
class RegisterExtensionTest {
@RegisterExtension
LoggingExtension log = new LoggingExtension(RegisterExtensionTest.class);
@Test void demoTest() {
...
}
}
当我将其转换为 Kotlin 时:
class RegisterExtensionTest {
@RegisterExtension
var log = LoggingExtension(RegisterExtensionTest::class.java)
@Test
fun demoTest() {
...
}
}
现在 LoggingExtension
不再运行。为什么?
最佳答案
记录在案here , 只需向该字段添加一个 @JvmField
注释,它就可以工作。
class RegisterExtensionTest {
@JvmField
@RegisterExtension
var log = LoggingExtension(RegisterExtensionTest::class.java)
@Test
fun demoTest() {
...
}
}
扩展字段必须是公开的(如果不是,JUnit 不会警告您),但在 Kotlin 中,一个属性会在字节码中创建一个私有(private)字段和一个 getter,所以 JUnit 看不到它。
关于java - 带有注释为 `@RegisterExtension` 的字段的 JUnit 5 测试在 Kotlin 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079539/