使用 DialogFragment 时,Espresso 不会在微调器中显示 select 项
Espresso won't select item in spinner when using a DialogFragment
情况
我有一个 Espresso 测试,它从旋转器中选择一个项目。当我 运行 此测试使微调器显示在 Activity(phone 模式)时,它会使用以下代码正确选择项目:
onView(withId(R.id.spinner)).perform(scrollTo()).perform(click());
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.perform(click());
其中 ID 和字符串被替换为实际值。
问题
但是,如果微调器位于 DialogFragment(平板电脑模式)上,则相同的代码会挂起并且似乎无法在微调器中找到该项目。它可以单击微调器,但无法再单击该项目。据我所知,没有其他区别。
问题
有没有人 运行 解决过这个问题或者知道我遗漏了什么?当微调器在片段上时,我需要做些什么不同的事情吗?我在文档或问题跟踪器中看不到任何内容。任何建议或想法表示赞赏。这可能是一个错误,但现在还没有发现它似乎并不是什么奇怪的事情,所以我认为更有可能是我做错了什么。
可能与 onData 有关,但为什么它现在不起作用,我该如何修复它?
在这种情况下,我似乎在 post 之前看起来不够认真,因为我发现了另一个正确答案的问题:
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.inRoot(isPlatformPopup())
.perform(click());
下面的答案未被接受 post 但这对我有用。
情况
我有一个 Espresso 测试,它从旋转器中选择一个项目。当我 运行 此测试使微调器显示在 Activity(phone 模式)时,它会使用以下代码正确选择项目:
onView(withId(R.id.spinner)).perform(scrollTo()).perform(click());
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.perform(click());
其中 ID 和字符串被替换为实际值。
问题
但是,如果微调器位于 DialogFragment(平板电脑模式)上,则相同的代码会挂起并且似乎无法在微调器中找到该项目。它可以单击微调器,但无法再单击该项目。据我所知,没有其他区别。
问题
有没有人 运行 解决过这个问题或者知道我遗漏了什么?当微调器在片段上时,我需要做些什么不同的事情吗?我在文档或问题跟踪器中看不到任何内容。任何建议或想法表示赞赏。这可能是一个错误,但现在还没有发现它似乎并不是什么奇怪的事情,所以我认为更有可能是我做错了什么。
可能与 onData 有关,但为什么它现在不起作用,我该如何修复它?
在这种情况下,我似乎在 post 之前看起来不够认真,因为我发现了另一个正确答案的问题:
onData(allOf(is(instanceOf(String.class)),
is("Spinner item string")))
.inRoot(isPlatformPopup())
.perform(click());
下面的答案未被接受 post 但这对我有用。