我有一个Espresso测试,可以从微调器中选择一个项目。当我运行此测试以使微调器显示在活动(手机模式)上时,它会使用此代码正确选择项目:
onView(withId(R.id.spinner)).perform(scrollTo()).perform(click());
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.perform(click());
其中ID和字符串替换为实际值。
但是,如果微调器在DialogFragment(平板电脑模式)上,那么相同的代码只会挂起,似乎无法在微调器中找到该项。它可以单击微调器但不再能够单击该项目。据我所知,没有其他差异。
有没有人遇到这个问题或知道我错过了什么?当微调器在片段上时,我需要做些什么吗?我在文档或问题跟踪器中看不到任何内容。任何建议或想法表示赞赏。它可能是一个错误,但它似乎并不是一件奇怪的事情,它现在不会被拾取,所以我认为我更有可能做错了。
也许与onData有关,但为什么它现在不起作用,我该怎么办呢?
答案 0 :(得分:3)
在这种情况下,我似乎在张贴之前看起来不够努力,因为我发现了另一个问题并且答案是正确的:
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.inRoot(isPlatformPopup())
.perform(click());
以下帖子没有接受答案,但这对我有用。
RunTimeException in Android espresso when selecting spinner in dialog