gpt4 book ai didi

android - 在 Kotlin 中进行单元测试的 BuildConfigField 模拟

转载 作者:行者123 更新时间:2023-12-03 14:49:30 28 4
gpt4 key购买 nike

我试图尽可能多地覆盖 Kotlin Android 库 我遇到了一个关于自定义 BuildConfig 变量的问题,更广为人知的是 buildConfigField .

我想模拟这个变量来测试 truefalse值(value)观。

从 Gradle 文件中提取:

android {
defaultConfig {
buildConfigField "boolean", "ENABLE_LOG", "false"
}
flavorDimensions "log"
productFlavors {
loggable {
buildConfigField "boolean", "ENABLE_LOG", "true"
dimension "log"
}
notloggable {
dimension "log"
}
}
}

要测试的 Kotlin 函数的提取:
fun buildClient(): MyClient {
var myClientBuilder : MyClient.Builder = MyClient.Builder();

if (BuildConfig.ENABLE_LOG) {
val interceptor = LoggingInterceptor();
interceptor.setLevel(LoggingInterceptor.Level.ALL);
myClientBuilder.addInterceptor(interceptor);
}

return myClientBuilder.build()
}

单元测试 :
@Test
fun buildClient_enableLog_oneInterceptor() {
// GIVEN
Mockito.mock(BuildConfig::class.java)
Mockito.doReturn(true).`when`(BuildConfig.ENABLE_LOG)

// WHEN
val myClient = myService!!.buildClient()

// THEN
assertNotNull(myClient)
assertNotNull(myClient.interceptors())
assertEquals(1, myClient.interceptors().size)
}

我尝试了不同的东西,但它从来没有奏效。
如果有人已经完成了这项工作,它可以帮助我很多(我猜还有其他人)。

谢谢

最佳答案

ReflectionHelpers.setStaticField(BuildConfig::class.java, "ENABLE_LOG", true)

关于android - 在 Kotlin 中进行单元测试的 BuildConfigField 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52181057/

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