Java JUnit 5测试,字段注释为“@RegisterExtension”不';我不在科特林工作
我有一个用Java JUnit 5测试,字段注释为“@RegisterExtension”不';我不在科特林工作,java,kotlin,junit5,Java,Kotlin,Junit5,我有一个用Java编写的junit5测试类,它使用了一个注释为@RegisterExtension的字段,它工作得很好: class RegisterExtensionTest { @RegisterExtension LoggingExtension log = new LoggingExtension(RegisterExtensionTest.class); @Test void demoTest() { ... } } 当我将其转换为
Java
编写的junit5
测试类,它使用了一个注释为@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
不再运行。为什么?如文档所述,只需在字段中添加一个@JvmField
注释,就可以了
扩展字段必须是公共的(如果不是,JUnit不会警告您),但在Kotlin中,属性会在字节码中创建一个私有字段和一个getter,因此JUnit不会看到它。Meta:作为参考,标记多行代码块在这里不起作用。改为使用4个空格。内联使用倒勾确实有效,但不支持使用三个倒勾创建块请注意,即将发布的5.3用户指南中也记录了这一点:Thanx@SamBrannen!也许还可以发出警告,甚至允许使用私有字段?JUnit原则上会忽略
private
code元素。所以我不认为这种情况会改变,但是如果你对GitHub的问题有强烈的感觉,那么你肯定会制造一个GitHub问题。关于不正确配置的警告,请看我希望我能+10回答!