AndroidJUnit测试在API级别17设备上找不到设计支持snackbar

时间:2016-01-09 23:19:37

标签: android android-espresso androiddesignsupport android-junit

我有一个AndroidJUnit4测试用例,在这个测试用例中,我使用以下代码来验证快餐栏是否显示并包含正确的文本:

onView(withId(android.support.design.R.id.snackbar_text)).check(matches(isDisplayed()));
onView(allOf(withId(android.support.design.R.id.snackbar_text), withText(R.string.msg_error_unknown_user)))
                    .check(matches(isDisplayed()));

当我在API级别为22的仿真器/设备上运行此测试时,测试运行正确。当我切换到API级别17时,测试失败并出现此异常:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.mydomain.myappname:id/snackbar_text

请注意,应用程序在两个API级别上的行为方式相同;小吃店正确显示。

为什么在我的测试用例中没有在API级别17上检索的零食栏,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

好吧,Espresso正在查看您的xml文件并搜索snackbar_text,但它找不到它,因为它有android系统ID,其中{{1}没有访问权限。如果您仍想查看它,请了解另一个名为Espresso的Google检测测试框架。

在这里,您可以找到它与uiautomatorhttp://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

一起使用的方式

另外,请花点时间看看我在下面的代码中如何测试Espresso

Snackbar

希望你觉得它很有用。