我尝试用Espresso进行截图测试:
测试
class ScreenshotTest {
@get:Rule
var nameRule = TestName()
@get:Rule
var mActivityTestRule = ActivityTestRule(MainActivity::class.java)
@Test
fun saveActivityBitmap() {
capture(mActivityTestRule.activity).bitmap.writeToTestStorage(nameRule.methodName)
}}
清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但失败并显示消息:
没有内容提供商注册: 内容://androidx.test.services.storage.outputfiles/saveActivityBitmap.png。 所有测试服务 apk 都安装了吗?
看来有必要调整ContentProvider...
伙计们,可能有人解决了这个问题,或者可能知道 writeToTestStorage 方法的大量文档在哪里。
Google 不知道这一点,“developer.android.com”仅在发行表中提到了此方法
我希望这对某人有帮助。 我在微软应用程序中心遇到了类似的问题。原因是appcenter不支持orchestrator。 此内容提供程序是 https://mvnrepository.com/artifact/androidx.test.services/test-services 的一部分。您应该安装 Orchestrator.apk 和 test-services.apk 来运行测试。 当您在本地模拟器上运行测试时,gradle 脚本会为您执行此操作,但 appcenter 不会
这确实取决于
test-services
:
androidTestImplementation("androidx.test.services:test-services:1.5.0")
然后在Gradle缓存中找到
test-services-1.5.0.apk
,上传到设备并安装...
orchestrator-1.5.0.apk
可能不需要。
人们也可以完全禁用这些屏幕截图:
Espresso.setFailureHandler(DefaultFailureHandler(targetContext, false))