Я не могу издеваться над финальным классом Kotlin с использованием Mockito 2. Кроме того, я использую Robolectric.
Это мой тестовый код:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class Test {
// more mocks
@Mock
MyKotlinLoader kotlinLoader;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
}
Тест не работает, когда мы пытаемся инициализировать mocks в методе setUp()
.
Кроме того, я использую следующие gradle зависимости в моем коде:
testCompile 'org.robolectric:robolectric:3.3.2'
testCompile 'org.robolectric:shadows-multidex:3.3.2'
testCompile 'org.robolectric:shadows-support-v4:3.3.2'
testCompile("org.powermock:powermock-api-mockito2:1.7.0") {
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-inline:2.8.9'
Все остальные модульные тесты проходят с использованием этой конфигурации, но как только я пытаюсь высмеять класс Kotlin, он выдает следующую ошибку:
Mockito cannot mock/spy because :
- final class
Обратите внимание, что я использую Mockito-версию 2, и я использую зависимость inline
, которая автоматически дает возможность имитировать окончательные классы.