gpt4 book ai didi

Android 在每次测试开始时撤销权限

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:17 25 4
gpt4 key购买 nike

我正在使用 Espresso 和 UIAutomator 来编写我的测试用例。我在拒绝和允许时测试外部存储权限。我有不同的测试用例,它们都需要在测试用例开始时撤销许可。但是,某些测试用例应该并且确实会导致授予权限,因此我需要在执行下一个测试时撤销权限。我四处搜索,发现最接近的事情是使用 pm 管理器执行 adb shell 命令来撤销权限。但是这样做,我会收到以下错误,Instrumentation run failed due to 'process crash'。有什么方法可以确保在每个测试用例开始时撤销权限?如果没有,如何解决有关测试权限的问题?提前感谢您的帮助!

这是我目前必须在每个测试用例之前撤销权限的代码 fragment (这是行不通的):

@Before
public void setUp() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getInstrumentation().getUiAutomation().executeShellCommand(
"pm revoke " + getTargetContext().getPackageName()
+ " android.permission.WRITE_EXTERNAL_STORAGE");
}
}

尝试使用上述代码 fragment 撤销权限时的相应错误消息:

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''.

我也遇到过这两个帖子:thisthis .

最佳答案

您不应该在测试开始前撤销任何权限。这将重新启动整个测试应用程序进程,测试将被标记为失败。

相反,您可以在测试执行完成后撤销权限,即在 @After 方法中,如下所示:

@After
fun tearDown(){
InstrumentationRegistry.getInstrumentation().uiAutomation.
executeShellCommand("pm revoke ${getTargetContext().packageName} android.permission.WRITE_EXTERNAL_STORAGE")
}

或者,您可以使用 Android Test Orchestrator版本 1.0.2 和设置

 testInstrumentationRunnerArguments clearPackageData: 'true'

这将在每次测试后清除包数据。

注意:Android Test Orchestrator v1.0.2 在通过 Jacoco 管理代码覆盖率报告时存在问题。

关于Android 在每次测试开始时撤销权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com