8

我正在尝试新的 Android 测试库 Espresso。当我尝试:

onView(withId(R.id.gettingStarted))

测试运行良好。但是当我尝试时:

onView(withId(R.id.gettingStarted)).check(matches(isDisplayed()));

我得到一个.NoMatchingViewException: No views in hierarchy found matching: with id: is <2131296645>

有没有人见过这样的事情?我最初的反应是这只是一个错误,因为 Espresso 仅在 1.0 版上。我正在使用 Android Studio 并完全按照设置说明进行操作。

4

3 回答 3

11

这是预期的行为。

onView(withId(R.id.gettingStarted))本身不做任何事情。当您调用 perform 方法时,Espresso 会针对当前视图层次结构运行 onView 方法中提供的匹配器 - 如果未找到匹配的视图,则会引发异常。

有关更多详细信息,请参阅入门指南:https ://developer.android.com/training/testing/espresso/index.html

于 2013-10-27T03:58:07.540 回答
0

在测试开发时无法确定 R.id 的情况有很多。例如,特定视图可能没有 R.id 或 R.id 不是唯一的。这会使正常的仪器测试变得脆弱且编写复杂,因为访问视图的正常方式(使用findViewById())不起作用。因此,您可能需要访问持有视图的 Activity 或 Fragment 的私有成员,或者找到具有已知 R.id 的容器并导航到特定视图的内容。

欲了解更多信息:https ://code.google.com/p/android-test-kit/wiki/EspressoStartGuide

于 2013-10-25T04:48:42.893 回答
0

这意味着在 UI 树的完整层次结构中找不到此 Id 的视图,无论视图是可见还是不可见。

于 2013-12-04T13:23:18.580 回答