Kotlin, Mockito и Android Test Instrumentation. Свойство Lateinit не было инициализировано

Я пытаюсь высмеять зависимость UseCase в тестовом инструменте.

Я создаю @Rule для работы с этим:

LocationsUseCaseRule.kt

 class LocationsUseCaseRule : ExternalResource() { @Mock lateinit var locationsUseCase : LocationsUseCase @Throws(Throwable::class) override fun before() { super.before() LocationsUseCase.setInstance(locationsUseCase) } } 

но когда я нажимаю before() , usecase не загружается.

У меня такая же реализация в Unit Tests, и она работает.

Это мои зависимости:

 // Mockito def mockitoVersion = "2.6.3" testCompile 'org.mockito:mockito-core:' + mockitoVersion androidTestCompile 'org.mockito:mockito-core:' + mockitoVersion androidTestCompile "org.mockito:mockito-android:" + mockitoVersion testCompile "com.nhaarman:mockito-kotlin-kt1.1:1.5.0" 

Вот как я установил свой экземпляр в LocationsUseCase :

 object Singleton { var instance: LocationsUseCase? = null } companion object { fun setInstance(locationsUseCase: LocationsUseCase?) { Singleton.instance = locationsUseCase } fun getInstance(): LocationsUseCase { if (Singleton.instance == null) { Singleton.instance = LocationsUseCase( LocationsRepository.instance ) } return Singleton.instance!! } } 

Я думаю, что этот способ проще и помогает, что вы хотите:

 object Singleton { val instance = LocationsUseCase(LocationsRepository.instance) } 
Intereting Posts
Как работает синтаксис доступа к свойствам Kotlin для классов Java (например, EditText setText)? Android Развернуть источники kotlin в репозитории maven Как получить статус доставки сообщения с помощью smack? Компиляция приложения Kotlin Android не удалась с сообщением: Неразрешенная ссылка: kotlinx Java / Android / Kotlin: отражение на частном поле и вызов общедоступных методов на нем Почему универсальные типы алгебраических данных требуют `T` для типов членов? Swift if let и еще в Котлине Ссылка Kotlin Textview id не работает с неанглийскими символами Mockito с тестированием асинхронного тестирования Kotlin Могу ли я преобразовать строку в выражение шаблона или выражение лямбда в kotlin? Котлин Абстрактное защищенное свойство Кинжал с Mvp на Kotlin – Android «Если» против «takeIf» в Котлине? Как переопределенные свойства обрабатываются в блоках init? Написание реагирует на родной модуль Android в Котлине?