Тест JUnit 5 с полем, помеченным как `@ RegisterExtension`, не работает в Kotlin - PullRequest
0 голосов
/ 29 августа 2018

У меня есть JUnit 5 тестовый класс, написанный на Java, в котором используется поле, помеченное @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 больше не работает. Почему?

1 Ответ

0 голосов
/ 29 августа 2018

Просто добавьте аннотацию @JvmField к полю, и она работает.

Поле расширения должно быть открытым (и JUnit не предупреждает вас, если это не так), но в Kotlin свойство создает приватное поле и геттер в байт-коде, поэтому JUnit его не видит .

...