- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试编写一个简单的测试,我只需单击主 Activity 中的 MenuItem:
public class doTest extends ActivityInstrumentationTestCase2<doActivity> {
public doTest() {
super(doActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
startActivity();
}
private void startActivity() {
Intent intent = new Intent();
setActivityIntent(intent);
getActivity();
}
public void testOne() {
Espresso.openContextualActionModeOverflowMenu();
onView(withId(R.id.create_new)).perform(ViewActions.click());
}
}
测试失败,出现“NoMatchingViewException”。如果我将 onView 行更改为:
onView(withText("Add new")).perform(ViewActions.click());
这是 Activity 的菜单 xml:
<item
android:id="@+id/create_new"
android:title="Add new"
tools:ignore="HardcodedText">
</item>
测试有效。为什么匹配器 withText 会找到 View ,而匹配器 withId 却找不到?
最佳答案
是的,这就是 Espresso 中的工作原理。这里的问题是,在 Android 中,表示菜单项的 View 没有菜单项的 ID。所以 onView(withId(X))
找不到 View 。我没有比仅使用 withText()
更好的建议了。如果您有多个包含相同文本的 View ,则可以使用层次结构进行区分。
关于android - 使用 withId 匹配器时 Espresso NoMatchingViewException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738028/
我的这个测试大约有一半的时间有效。 @Test public void thirdSwipe() { onView(withId(R.id.pager)).perform(swipeL
我正在尝试编写一个简单的测试,我只需单击主 Activity 中的 MenuItem: public class doTest extends ActivityInstrumentationTestC
我正在尝试使用 espresso 为我的应用程序编写单元测试,但每当我尝试使用 withId 时,都找不到它。我该如何解决这个问题? onView 工作正常,但是当我尝试 onView(withId)
我正在使用 Espresso 进行测试,首先我打开操作栏: openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetConte
有什么区别 1.ViewInteraction v = onView(allOf(withId(R.id.login_card_view), isDisplayed())) 和 2.v.check(匹
我是一名优秀的程序员,十分优秀!