0

我真的很想把头放在单元测试上。可以为路障提供一点帮助。在询问位置权限时,我试图单击位置弹出按钮。我正在使用 JUnit 4 和 expresso。这是我的测试规则:

@get:Rule
val testRule: ActivityTestRule<MyActivity> = ActivityTestRule(MyActivity::class.java)

我有一个设置功能:

@Before
fun setUp() {
    mActivity = testRule.activity
    mFragment = MyFragment.newInstance()
}

最后我的按钮点击测试:

@Test
fun testLocationClick(){
    Assert.assertNotNull(onView(withId(R.id.button_turn_on_location)))
    onView(withId(R.id.button_turn_on_location)).perform(click())

    onView(withText("Allow all")).perform(click())

最后一行说“全部允许”是我尝试单击允许按钮但它不起作用。这是一张附加图片,显示了我要点击的内容。 图片

4

1 回答 1

1

Shameless self-plug:我在 2016 年写了一篇文章,描述了一个类似问题的解决方案,名为Testing Runtime Permissions: Lessons Learned,希望它仍然有用。TLDR:由于权限对话框是一个系统对话框并且存在于您的应用程序进程之外,因此无法通过 Espresso 访问。您需要使用UI Automator,它在从被测访问系统 UI 方面提供了更多可能性。

于 2020-01-01T01:28:19.663 回答