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
Продукт AndroidFlavors в gradle-kotlin-dsl Java vs Kotlin generics KMango: обновить коллекцию с помощью col.updateOne / col.updateMany Явное возвращение из лямбда-выражения в Котлине Как проверить наблюдателя? Бинарная версия метаданных – 1.0.1, ожидаемая версия – 1.1.0 Можем ли мы достичь безопасности типа компиляции для объединения типов, которые мы не можем контролировать? java.lang.VerifyError в расширении свойства с kotlin Сохранить / Восстановить состояние NestedScrollView с несколькими RecyclerViews и другими видами viewGroup return null на адаптере Recyclerview Как правильно обрабатывать значения байтов, превышающие 127 в Котлине? Android kotlin onTouchListener хочет, чтобы я переопределял функцию performClick () Изображение не отображается в Recyclerview с помощью Glide Невозможно ссылаться на подкласс в Котлине Вызывающая (базовая) делегированная функция при использовании делегирования класса из переопределения