Android检测不会在第二个设备上启动



自从一段时间以来,当我在设备(模拟器)上运行仪表测试并尝试并行地在第二个设备上启动另一个测试时,我得到以下异常:

FAILURE: Build failed with an exception.

出错原因:任务':app:connectedDebugAndroidTest'执行失败

java.nio.file。Android FileSystemException: D: MyApp app 制造 androidTest-results name_of_the_first_device logcat-MyApp.TestClassName-TestName.txt连接输出:进程无法访问该文件,因为它正在被另一个进程使用

问题似乎是,构建过程试图从第一个测试设备访问文件,该设备已经被阻塞。但我正在使用不同的设备,并尝试进行不同的测试。

我这样做的原因是因为一些测试非常大,因此我试图将它们分散到几个设备上,这样我就能更快地得到结果。我运行测试的机器性能很好,所以这不可能是资源的问题;-)。

当我几个月前做了描述的动作,它工作正常,所以我猜这是由于一些更新(可能在Gradle或其他)。但是从那以后我安装了几个更新,所以这不可能是当前版本的问题。

-多两个输入:

  1. 我最近切换到使用柄,因此创建了我自己的TestRunner,因为用@HiltApplication注释的应用程序不能用于测试,所以我不得不创建一个自定义的测试,需要在自定义TestRunner中运行,如这里所述。
  2. 当我使用"选择多个设备"在多个设备上运行相同的测试时;

错误消息表明在开发计算机上的构建并运行输出文件存在冲突,而不是在Android测试设备上。也就是说,它试图在运行测试用于测试的logcat输出等目的的相同构建输出目录中执行另一个构建并运行。

我的第一个想法是尝试复制androidTest到另一个构建目标。相同的内容,不同的目标名称,不同的输出目录。该解决方案似乎可以克服这个限制(但有新的限制),并有助于调试问题。但是name_of_the_first_device子目录表明它可以为每个测试设备保留一个logcat输出文件,所以真正的问题是如何让测试运行器为每个测试设备使用一个单独的子目录。

第二个想法是指向你的文档,运行多设备测试和碎片测试。

使用自定义TestRunner,请参阅编写分片IRemoteTest测试运行器(以及"交易"中的其他页面)。节)如何使其成为"可共享的"测试运行器,它使测试基础结构能够在多个设备上分发完整的测试执行。

最新更新