Snackbar 取代了 Toast,并且当 Snackbar 来到前台时单元测试崩溃了

问题描述 投票:0回答:1

我在代码中用 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 问题,我也将能够运行我的测试。但总的来说,我已经搜索并尝试了很多解决方案,但没有结果! 预先感谢。

android android-snackbar snackbar
1个回答
0
投票

如果您正在进行 ui 测试,并且小吃栏显示上面的片段,那么包含片段的默认活动是

androidx.fragment.app.testing.EmptyFragmentActivity

所以你只需要在运行测试用例之前添加你的活动

val firstActivity: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java) firstActivity.launchActivity(Intent()) 

© www.soinside.com 2019 - 2024. All rights reserved.