使用DialogFragment时,Espresso不会在微调器中选择项目

时间:2017-03-15 10:54:10

标签: android android-espresso

情况

我有一个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有关,但为什么它现在不起作用,我该怎么办呢?

1 个答案:

答案 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