【发布时间】:2019-01-05 18:12:51
【问题描述】:
在将代码和测试迁移到 AndroidX 之后,一切似乎都运行良好,但是由于 NoClassDefFoundError: androidx/fragment/testing/R$,两个片段的 Robolectric junit 测试失败了样式 例外。 堆栈跟踪:
java.lang.NoClassDefFoundError: androidx/fragment/testing/R$style at 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$create$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 指的是包 androidx.fragment.testing.R 中缺少的 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
【问题讨论】:
标签: android robolectric androidx androidx-test