Android Instrumentation无法在第二设备启动,并行测试遇文件占用异常
多设备并行执行不同Instrumentation测试时文件占用异常问题
近期在一台模拟器上运行Instrumentation测试的同时,尝试在第二台设备并行启动另一项测试,触发如下构建失败异常:
FAILURE: Build failed with an exception.
What went wrong: Execution failed for task ':app:connectedDebugAndroidTest'.
java.nio.file.FileSystemException: D:\Android\MyApp\app\build\outputs\androidTest-results\connected\name_of_the_first_device\logcat-MyApp.TestClassName-TestName.txt:
The process cannot access the file because it is being used by another process
问题核心:构建进程尝试访问第一台设备专属目录下的日志文件,但该文件已被占用。实际操作中使用的是另一台设备,且运行的是不同测试,理论上不该出现跨设备的文件访问冲突。
操作目的:将大型测试拆分到多设备并行执行,以加快测试完成速度,设备性能强劲,不存在资源不足问题。
背景:数月前该操作可正常执行,推测是Gradle或相关Android构建工具更新导致,但期间安装了多个更新,无法定位具体版本问题。
更新补充信息
- 近期切换使用Hilt,因此创建了自定义
TestRunner:由于带有@HiltApplication注解的Application无法用于测试,需创建测试用自定义Application,并通过该自定义TestRunner运行测试。 - 使用Android Studio中的「Select Multiple Devices」下拉框选择多设备运行相同测试时,可正常执行,无文件占用异常。
内容的提问来源于stack exchange,提问作者Aorlinn
相关产品推荐
相关产品推荐

