Я сейчас пытаюсь перенести проект на Java 13 (включая module-info.java
, что важно для проблемы), JUnit 5, последнюю версию Mockito 3.3.3 и Maven.
Но по-видимому, внедрение макетов с использованием @Mock
не работает, когда я запускаю тесты с Maven.
Я пытался создать mock-экземпляр из интерфейса. Мой тест выглядит так:
@ExtendWith(MockitoExtension.class)
public class MockitoTest {
@Mock
protected MyInterface myMock;
@Test
public void shouldMock() {
// Do something
}
}
Ошибка следующая:
[INFO] Running com.github.schuettec.mocktest.MockitoTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.416 s <<< FAILURE! - in com.github.schuettec.mocktest.MockitoTest
[ERROR] com.github.schuettec.mocktest.MockitoTest.shouldMock Time elapsed: 0.401 s <<< ERROR!
org.mockito.exceptions.base.MockitoException: Problems setting field myMock annotated with @org.mockito.Mock(name="", stubOnly=false, extraInterfaces={}, answer=RETURNS_DEFAULTS, serializable=false, lenient=false)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field protected com.github.schuettec.mocktest.MyInterface com.github.schuettec.mocktest.MockitoTest.myMock accessible: module mocktest does not "opens com.github.schuettec.mocktest" to unnamed module @6b9ce1bf
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] MockitoTest.shouldMockBothWithoutOpens » Mockito Problems setting field innerM...
[INFO]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
Я работаю на JDK 13, поэтому я добавил module-info.java
. Это очень просто:
module mocktest {
exports com.github.schuettec.mocktest;
}
Когда я добавляю open module
, тест работает нормально. Но я не хочу объявлять мой модуль открытым для размышлений.
Я что-то упускаю?
Если вы хотите посмотреть, я загрузил минимальный пример: https://github.com/schuettec/junit5-java13-test
И журнал сборки здесь: https://travis-ci.org/github/schuettec/junit5-java13-test/builds/683407777
Спасибо за вашу помощь!