代码和测试迁移到之后AndroidX,一切似乎都工作得很好,但是 Robolectric junit 测试两个片段失败了,因为NoClassDefFoundError:androidx/fragment/testing/R$style例外。
堆栈跟踪:
java.lang.NoClassDefFoundError: androidx/fragment/testing/R$style 位于
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 https://github.com/marcinbak/androidx-test-error
Google 的问题跟踪器中也报告了:https://issuetracker.google.com/issues/122321150 https://issuetracker.google.com/issues/122321150
根据谷歌的回答,需要包括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 https://issuetracker.google.com/issues/122321150
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)