java–Espresso:选择后为什么纺纱厂不关门?

java–Espresso:选择后为什么纺纱厂不关门?,第1张

概述我有一个关于在SpinnerswithEspresso中选择商品的问题.或者更确切地说:选择有效,但之后视图断言失败,因为微调器仍处于打开状态.假设我有一个非常简单的活动,其中包含一个微调器和一个显示选择的textview,如下所示:现在,我写了一个Espresso测试,选择’狗’并验证textview是否相

我有一个关于在Spinners with Espresso中选择商品的问题.或者更确切地说:选择有效,但之后视图断言失败,因为微调器仍处于打开状态.

假设我有一个非常简单的活动,其中包含一个微调器和一个显示选择的textvIEw,如下所示:

现在,我写了一个Espresso测试,选择’狗’并验证textvIEw是否相应更新:

@Testpublic voID selectDogs() throws Exception {    onData(allOf(is(instanceOf(String.class)), is("dogs")))            .inAdapterVIEw(withID(R.ID.spinner))            .perform(click());    onVIEw(withID(R.ID.selected)).check(matches(withText("dogs")));}

该测试失败,因为onData()…执行(click());没有关闭旋转器,它只是让它打开.通过调试验证:

例外是:

androID.support.test.espresso.NoMatchingVIEwException: No vIEws in hIErarchy found matching: with ID: org.flinc.app:ID/selectedIf the target vIEw is not part of the vIEw hIErarchy, you may need to use Espresso.onData to load it from one of the following AdapterVIEws:androID.Widget.ListPopupWindow$dropdownlistview{226cb88 VFED.VC.. .F...... 0,0-231,432}

我可以(通过在微调器选择后添加pressBack()来修复我的测试,但对我来说这不是正确的解决方案.它也会在模拟器上出现问题,但它似乎在我的设备上正常运行.
如何在微调器中正确选择然后关闭它?

非常感谢您的帮助!

以下是活动代码供参考:

@OverrIDeprotected voID onCreate(@Nullable Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.test_spinner);    Spinner spinner = (Spinner) findVIEwByID(R.ID.spinner);    final TextVIEw selected = (TextVIEw) findVIEwByID(R.ID.selected);    final List<String> items = Arrays.asList("cats", "dogs", "unicorns");    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, androID.R.layout.simple_spinner_item, items);    adapter.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item);    spinner.setAdapter(adapter);    spinner.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() {        @OverrIDe        public voID onItemSelected(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) {            selected.setText(items.get(position));        }        @OverrIDe        public voID onnothingSelected(AdapterVIEw<?> parent) {            selected.setText("");        }    });}

解决方法:

您必须先单击微调器,使用以下代码:

@Testpublic voID selectDogs() throws Exception {    onVIEw(withID(R.ID.spinner)).perform(click());    onData(allOf(is(instanceOf(String.class)), is("dogs")))            .perform(click());    onVIEw(withID(R.ID.selected)).check(matches(withText("dogs")));}
总结

以上是内存溢出为你收集整理的java – Espresso:选择后为什么纺纱厂关门?全部内容,希望文章能够帮你解决java – Espresso:选择后为什么纺纱厂不关门?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存