Я использую диспетчер работы Android с пользовательской инициализацией. чтобы сделать это, я отключаю авто-инициализацию в манифесте, как это
<provider
tools:replace="android:authorities"
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.work_manager_init"
android:enabled="false"
android:exported="false" />
А в коде приложения я использую этот код
private fun initWorkManager() {
WorkManager.initialize(this, Configuration.Builder().run {
setWorkerFactory(appComponent.daggerWorkerFactory())
build()
})
}
И все работает нормально, когда я запускаю свое приложение. Но когда я тестирую с roboletric, любой класс, которому нужен контекст RuntimeEnvironment.application
, выдает это исключение
java.lang.IllegalStateException: WorkManager is already initialized.
Did you try to initialize it manually without disabling
WorkManagerInitializer? See WorkManager#initialize(Context,
Configuration) or the class levelJavadoc for more information.
initWorkManager()
получает вызовы и выдает это, потому что он не знает, что auto-init уже отключен в манифесте, и каким-то образом мой тест не может прочитать значения из файла манифеста.
Любая помощь или предложение будут оценены.