gpt4 book ai didi

android - 使用 withId 匹配器时 Espresso NoMatchingViewException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:02 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的测试,我只需单击主 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com