android - Facebook 的屏幕截图测试失败,api 大于 23

标签 android android-espresso

我正在使用 Karumi 的镜头插件 (https://github.com/karumi/shot) 从我的测试中截取屏幕截图,然后使用 facebook 的库进行比较:http://facebook.github.io/screenshot-tests-for-android/

该库在使用大于 23 的 api 运行时会出现问题,因为它需要 WRITE_EXTERNAL_STORAGE 权限,并且由于 api 23,在测试期间授予权限并非易事。

但是在 espresso 3.0 中添加了 GrantPermissionRule 并且有了这个,您可以轻松地在之前设置权限来执行测试。

好吧,我添加了规则:

@Rule @JvmField
val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)

并使用以下代码截取屏幕截图:
Screenshot.snapActivity(activityTestRule.activity).record()

我有一个运行的自定义 TestRunner:
override fun onCreate(args: Bundle) {
    super.onCreate(args)
    ScreenshotRunner.onCreate(this, args)
}

override fun finish(resultCode: Int, results: Bundle) {
    ScreenshotRunner.onDestroy()
    super.finish(resultCode, results)
}

但是当我执行测试时,我收到以下错误:
java.lang.RuntimeException: Failed to create the directory for screenshots. Is your sdcard directory read-only?
    at com.facebook.testing.screenshot.internal.ScreenshotDirectories.getSdcardDir(ScreenshotDirectories.java:66)

最佳答案

该插件无法将屏幕截图保存在 API >= 23 中,因为必须在测试 APK 而不是被测 APK 中授予权限。使用名为授予权限测试规则的规则不提供此功能。官方 Facebook 库不支持此功能,我们暂时不支持它:(

我还在 GitHub 存储库中回答了您的问题 https://github.com/Karumi/Shot/issues/19#issuecomment-328334528

关于android - Facebook 的屏幕截图测试失败,api 大于 23,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126100/

相关文章:

android - 为什么fragment恢复后又调用了onLoadFinished?

android - 如何在 Android 或 Android Espresso 中获取 View 层次结构

android - 如何旋转 Activity ,我的意思是 : screen orientation change using Espresso?

Android:TargetFrameworkVersion 大于我的项目

java - 如何在安卓平板电脑的屏幕上显示鼠标光标?

c# - 使用 Zxing.Net Mobile 的表格无法识别

android - 运行 espresso 测试时测试仪器进程崩溃

带有 Fragments 的 Android espresso。 getActivity 返回 NULL

android - 在多项 Activity 中使用 Espresso 空闲资源

java - 如何从android中的字符串文件填充微调器