我在代码中用 Snackbar 替换了 Toast。我在相应的构建中添加了以下依赖项:
implementation('com.google.android.material:material:1.8.0-alpha01')
private fun showMessageInSnackbar (message: String) {
val snackbar = view?.let {
Snackbar.make(it,
message,
Snackbar.LENGTH_LONG)
}
}
我可以看到 Snackbar 在模拟器和物理设备中都能正常工作。但是,当我运行以小吃栏为结果的片段的单元测试时,测试失败并显示消息:
android.view.InflateException: Binary XML file line #51 in com.xxxxxx.xxx:layout/design_layout_snackbar_include: Binary XML file line #51 in com.xxxxxx.xxx:layout/design_layout_snackbar_include: Error inflating class <unknown>
Caused by: android.view.InflateException: Binary XML file line #51 in com.xxxxxx.xxx:layout/design_layout_snackbar_include: Error inflating class <unknown>
注1:junit 不测试snackbar 或显示的文本。
注2:我在material-1.6.1-sources.jar/com/google/android/material/snackbar中看到的是符号R是红色/无法解析
导入 com.google.android.material.R;
上面提到的design_layout_snackbar_include是 R.layout.design_layout_snackbar_include 和 R 未解决。
有人可以帮忙解决这个问题吗?我相信,如果我能够解决 R 问题,我也将能够运行我的测试。但总的来说,我已经搜索并尝试了很多解决方案,但没有结果! 预先感谢。
如果您正在进行 ui 测试,并且小吃栏显示上面的片段,那么包含片段的默认活动是
androidx.fragment.app.testing.EmptyFragmentActivity
所以你只需要在运行测试用例之前添加你的活动
val firstActivity: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java) firstActivity.launchActivity(Intent())