Я запускаю Espresso
тесты, используя MockRetrofit
для тестирования потоков пользовательского интерфейса в приложении. Тесты Espresso
полагаются на замену производственной Dagger
ApiModule
, расположенной в src/main/java/com/my/app/ApiModule
@Module(includes = [NetworkModule::class])
class ApiModule {
@Provides
@Singleton
fun restApi(
retrofit: Retrofit.Builder,
@DefaultClientBuilder clientBuilder: OkHttpClient.Builder
): RestApi {
val apiRetrofit = retrofit.client(clientBuilder.build()).build()
return apiRetrofit.create<RestApi>(RestApi::class.java)
}
}
, на поддельную ApiModule
, расположенную в src/androidTest/java/com/my/app/ApiModule
@Module(includes = [NetworkModule::class])
class ApiModule {
@Provides
@Singleton
fun restApi(
retrofit: Retrofit.Builder,
@DefaultClientBuilder clientBuilder: OkHttpClient.Builder
): RestApi {
return MockApiModule.getApi(failureRate = FailureRate.NEVER, responseDelay = 500L)
}
}
Я только что обновился до AGP 3.6 (а затем до 4.0). При запуске ./gradlew connectedDebugAndroidTest
тесты все еще проходят. Но у меня также есть конфигурация сборки под названием debugMinified
buildTypes{
...
debugMinified {
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-testing.pro'
signingConfig signingConfigs.debug
}
...
}
, которую я использую для запуска тестов Espresso
с обфусцированным apk для обнаружения ошибок времени выполнения, связанных с Pro-guard.
Теперь, когда Я запускаю ./gradlew connectedDebugMinifiedAndroidTest
, мои тесты терпят неудачу, потому что AGP не меняет местами поддельную реализацию в наборе androidTest
sr c при анализе apk. Он просто использует реальную реализацию в main
. Но опять же, это происходит только для минифицированных сборок.
Вышеупомянутый класс ApiModule
- один из 5 классов, которые я заменяю таким образом при запуске тестов пользовательского интерфейса. Остальные 4 не имеют ничего общего с Dagger
и также не заменяются, поэтому я относительно уверен, что это не просто проблема Dagger
.
Это в настоящее время не позволяет мне перейти на AGP 4.0, поэтому любая помощь приветствуется.