Android Facebook的截图测试失败,api大于23

Android Facebook的截图测试失败,api大于23,android,android-espresso,Android,Android Espresso,我正在使用Karumi的快照插件()从我的测试中截取屏幕快照,然后使用facebook的库进行比较: 使用大于23的api运行库时会出现问题,因为它需要WRITE_EXTERNAL_存储权限,而且由于api 23,在测试期间授予权限不是一项简单的任务 但是在espresso 3.0中添加了GrantPermissionRule,通过该规则,您可以轻松地在测试执行之前设置权限 好吧,我加了一条规则: @Rule @JvmField val grantPermissionRule: GrantPer

我正在使用Karumi的快照插件()从我的测试中截取屏幕快照,然后使用facebook的库进行比较:

使用大于23的api运行库时会出现问题,因为它需要WRITE_EXTERNAL_存储权限,而且由于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存储库中回答了您的问题