使用Dropbox Dropshots截图测试时录制命令执行全部插桩测试的问题
Dropbox Dropshots截图测试时录制命令执行全部插桩测试的问题
嘿,我来帮你搞定这个困扰~ 你遇到的这个问题其实挺常见的,Dropshots默认的录制任务是基于Android的插桩测试任务来运行的,所以会把所有59个插桩测试都跑一遍,而不是只针对那2个截图测试。给你几个实用的解决办法:
直接指定测试类/方法运行
你可以在gradle命令里添加过滤参数,只执行目标截图测试类或者单个测试方法。比如你的截图测试类全路径是com.example.MySampleScreenshotTests,那命令就改成:.\gradlew :app:recordDebugAndroidTestScreenshots -Pandroid.testInstrumentationRunnerArguments.class=com.example.MySampleScreenshotTests如果只想跑某个具体方法,就写成
类全路径#方法名,比如:.\gradlew :app:recordDebugAndroidTestScreenshots -Pandroid.testInstrumentationRunnerArguments.class=com.example.MySampleScreenshotTests#testHomeScreen用标签过滤测试
先给你的截图测试类或方法打上自定义标签,比如在测试代码里加@Tag("screenshot")注解(记得引入JUnit的Tag类哦)。然后在执行命令时指定只运行带这个标签的测试:.\gradlew :app:recordDebugAndroidTestScreenshots -Pandroid.testInstrumentationRunnerArguments.tags=screenshot这样所有标记了
screenshot的测试都会被执行,其他测试会被跳过,非常适合批量管理截图测试。自定义Gradle任务(一劳永逸)
如果你经常要跑截图测试,可以在app模块的build.gradle里自定义一个专门的任务,把过滤逻辑写进去,以后直接运行这个任务就行。比如:task runScreenshotRecording(type: Exec) { dependsOn ':app:recordDebugAndroidTestScreenshots' commandLine './gradlew', ':app:recordDebugAndroidTestScreenshots', '-Pandroid.testInstrumentationRunnerArguments.tags=screenshot' }保存后,直接运行
.\gradlew :app:runScreenshotRecording就能只跑截图测试了。
原理其实很简单:recordDebugAndroidTestScreenshots任务默认依赖了connectedDebugAndroidTest,而后者会执行所有插桩测试,所以通过添加过滤参数就能精准控制要运行的测试范围啦~
备注:内容来源于stack exchange,提问作者KvdLingen
相关产品推荐
相关产品推荐

