Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit 5测试,字段注释为“@RegisterExtension”不';我不在科特林工作_Java_Kotlin_Junit5 - Fatal编程技术网

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回答!