将代码和测试迁移到AndroidX 后,一切似乎都运行良好,但是由于NoClassDefFoundError: androidx/fragment/testing/R$style异常,两个片段的 Robolectric junit 测试失败。堆栈跟踪:
java.lang.NoClassDefFoundError: androidx/fragment/testing/R$style at androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity.onCreate(FragmentScenario.java:79) at 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。 org.robolectric.android 上的 ActivityController.create(ActivityController.java:74)。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