Jetpack Compose 的权限测试

Arn*_*r Z 5 android automated-tests kotlin android-jetpack android-jetpack-compose

我正在使用 Jetpack Compose 来渲染我的应用程序的 UI。我目前正在为库开发一些测试,但我无法找到任何正确的方法来检查权限。我目前正在使用伴奏者权限库来检查权限。然而,似乎在测试开始时已经授予了权限,即使我当前正在检查位置权限,据我所知,实际上不应该授予该权限。

我应该如何检查权限是否被授予,以及如何在权限对话框上执行点击?也许有这样的东西?

composeTestRule.onNodeWithText("While using the app").performClick()
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很脏。

注意:我正在初始化,composeTestRule就像官方指南所示

@get:Rule
val composeTestRule = createComposeRule()
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助,如果需要,我很乐意提供更多信息。

编辑 1:记住将权限添加到清单中非常重要。就我而言,我在应用程序中为该库使用单独的模块,因此我忘记添加我请求的权限。例子:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.yourpackage"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

</manifest>
Run Code Online (Sandbox Code Playgroud)

编辑2:指令,例如

composeTestRule.onNodeWithText("Precise").performClick()
composeTestRule.onNodeWithText("While using the app").performClick()
Run Code Online (Sandbox Code Playgroud)

完全不起作用,因为对话框位于撰写视图之外。也许使用原始浓缩咖啡?

最后的想法:经过一番深入的调查,似乎这可能无法通过 Jetpack Compose 测试进行测试,Espresso 也无法进行测试。这种测试必须使用UiAutomator(官方文档)来执行。