Ошибка JUnit в Kotlin: UninitializedException - переменная lateinit не инициализирована - PullRequest
0 голосов
/ 14 июня 2019

Я пишу тест JUnit для проекта Kotlin.Я также использую Dagger и AAPT в своем проекте, поэтому есть зависимости класса приложения, связанные с классами ViewModel, как показано ниже:

Класс приложения:

class BaseApplication : Application() {
private lateinit var component: AppComponent

companion object {
    lateinit var instance: BaseApplication
        private set
}

override fun onCreate() {
    super.onCreate()
    instance = this
    component = DaggerAppComponent.builder()
        .databaseModule(DatabaseModule(this))
        .connectivityModule(ConnectivityModule(this)).build()
    }
}

ViewModel:

abstract class BaseViewModel : ViewModel() {
@Inject
lateinit var connectivityManager: ConnectivityManager
private val injector: AppComponent = DaggerAppComponent
    .builder()
    .networkModule(NetworkModule)
    .databaseModule(DatabaseModule(BaseApplication.instance))
    .connectivityModule(ConnectivityModule(BaseApplication.instance))
    .build()

init {
    inject()
}

private fun inject() {
    when (this) {
        is ChildListViewModel -> injector.inject(this)
    }
}

fun isNetworkConnected(): Boolean {
    return if (connectivityManager is ConnectivityManager) {
        val networkInfo: NetworkInfo? =           connectivityManager.activeNetworkInfo
        networkInfo?.isConnected ?: false
       } else false
    }
  }

В моем тестовом классе, когда я пытаюсь инициализировать класс ViewModel, он выдает ошибку:

UninitializedException lateinit var не инициализирован.

1 Ответ

0 голосов
/ 14 июня 2019

Вы пытаетесь инициализировать BaseViewModel, потому что я вижу этот класс абстрактным в показанном вами коде?ViewModel осведомлен о жизненном цикле, и его следует создавать изнутри самого действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...