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

Mic*_*ovo 3 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());
Run Code Online (Sandbox Code Playgroud)

其中 ID 和字符串替换为实际值。

问题

但是,如果微调器位于 DialogFragment(平板电脑模式)上,那么相同的代码就会挂起,并且似乎无法在微调器中找到该项目。它可以单击微调器,但不能再单击该项目。据我所知,没有其他区别。

有没有人遇到过这个问题或知道我错过了什么?当微调器位于片段上时,我需要做些什么不同的事情吗?我在文档或问题跟踪器中看不到任何内容。任何建议或想法表示赞赏。这可能是一个错误,但它现在不会被发现似乎并不是一件奇怪的事情,所以我认为我做错了什么的可能性更大。

也许与 onData 有关,但为什么它现在不起作用,我该如何解决?

Mic*_*ovo 7

在这种情况下,我在发帖之前看起来不够努力,因为我发现了另一个有正确答案的问题:

onData(allOf(is(instanceOf(String.class)), 
   is("Spinner item string")))
   .inRoot(isPlatformPopup())
   .perform(click());
Run Code Online (Sandbox Code Playgroud)

下面的帖子没有接受答案,但这对我有用。

在对话框中选择微调器时,Android espresso 中的 RunTimeException