Robolectric AndroidX фрагменты NoClassDefFoundError - PullRequest
0 голосов
/ 02 января 2019

После переноса кода и тестов в AndroidX все, кажется, работает довольно хорошо, однако тесты робоблокового джунита для двух фрагментов не выполняются из-за NoClassDefFoundError: androidx / фрагмент / testing / R $ стиля исключение. Трассировка стека:

java.lang.NoClassDefFoundError: стиль androidx / фрагмент / тестирование / R $ в androidx.fragment.app.testing.FragmentScenario $ EmptyFragmentActivity.onCreate (FragmentScenario.java:79) на android.app.Activity.performCreate (Activity.java:5933) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1105) в androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate (MonitoringInstrumentation.java:674) в org.robolectric.android.controller.ActivityController.lambda $ создать $ 0 (ActivityController.java:69) в org.robolectric.shadows.ShadowLooper.runPaused (ShadowLooper.java:365) в org.robolectric.android.controller.ActivityController.create (ActivityController.java:69) в org.robolectric.android.controller.ActivityController.create (ActivityController.java:74) в org.robolectric.android.internal.LocalActivityInvoker.startActivity (LocalActivityInvoker.java:39) в androidx.test.core.app.ActivityScenario.launch (ActivityScenario.java:207) в androidx.fragment.app.testing.FragmentScenario.internalLaunch (FragmentScenario.java:283) в androidx.fragment.app.testing.FragmentScenario.launchInContainer (FragmentScenario.java:265)

Для тестирования фрагментов я использую FragmentScenario, и, похоже, FragmentScenario.EmptyFragmentActivity ссылается на отсутствующий класс R из пакета androidx.fragment.testing.R:

setTheme (getIntent (). GetIntExtra (THEME_EXTRAS_BUNDLE_KEY, R.style.FragmentScenarioEmptyFragmentActivityTheme));

Есть идеи, что может быть не так? Может быть, мне не хватает зависимости, которая не так очевидна для меня.

Воспроизводится в следующем проекте: https://github.com/marcinbak/androidx-test-error

Также сообщается в трекере проблем Google: https://issuetracker.google.com/issues/122321150

1 Ответ

0 голосов
/ 05 января 2019

Согласно ответу от Google, необходимо включить androidx_fragment_test ( androidx.fragment: фрагмент-тестирование: 1.1.0-alpha03 ) в тестируемый APK (не в инструментарии)APK или зависимость тестирования).

Что это означает, что его нужно добавить как debugImplementation androix_fragment_test в файл build.gradle.

Если вы также запускаете тесты для цели выпусказатем вам нужно добавить реализацию androix_fragment_test .

Вы можете увидеть весь разговор в системе отслеживания проблем Google: https://issuetracker.google.com/issues/122321150

...