Я пытаюсь охватить как можно больше библиотеки Kotlin Android , и у меня возникает проблема с пользовательской переменной BuildConfig, более известной как buildConfigField
.
Я хотел бы смоделировать эту переменную для проверки значений true
и false
.
Извлечение из файла 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)
}
Я пробовал разные вещи, и это никогда не работает.
Если кто-то уже проделал эту работу, она может мне сильно помочь (и другим, я думаю).
Спасибо