gpt4 book ai didi

android - Kotlin、Mockito 和 Android 测试仪器。 Lateinit 属性尚未初始化

转载 作者:行者123 更新时间:2023-11-29 01:06:00 24 4
gpt4 key购买 nike

我正在尝试在测试仪器中模拟 UseCase 依赖项。

我正在创建一个 @Rule 来处理这个问题:

LocationsUseCaseRule.kt

class LocationsUseCaseRule : ExternalResource() {

@Mock
lateinit var locationsUseCase : LocationsUseCase

@Throws(Throwable::class)
override fun before() {
super.before()
LocationsUseCase.setInstance(locationsUseCase)
}
}

但是当我点击 before() 时,用例没有加载。

我在单元测试中有相同的实现并且它有效。

这些是我的依赖项:

// 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)
}

关于android - Kotlin、Mockito 和 Android 测试仪器。 Lateinit 属性尚未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47147167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com