我在我的Android设备上使用以下命令执行一些测试:
adb shell am instrument -w package.name/android.test.runner.AndroidJUnitRunner
我可以通过STDOUT看到测试进度和简单的结果。但是,这个过程是否也会在设备内部生成结果文件(xml,html等)?如果是,储存在哪里?
谢谢
我在我的Android设备上使用以下命令执行一些测试:
adb shell am instrument -w package.name/android.test.runner.AndroidJUnitRunner
我可以通过STDOUT看到测试进度和简单的结果。但是,这个过程是否也会在设备内部生成结果文件(xml,html等)?如果是,储存在哪里?
谢谢
4条答案
按热度按时间smdncfj31#
但是,这个过程是否也会在设备内部生成结果文件(xml,html等)?
不,不是的。
报告生成通常在比“am instrument”更高的层处理。如果您使用Gradle运行测试,它应该会为您生成报告。我相信这也是Android Studio所依赖的。
如果必须从测试本身生成报告,则可以使用自定义测试运行器。看看这个答案的一种方法:http://www.stackoverflow.com/a/5574418/1999084
olmpazwi2#
我也遇到过类似的问题(当我的Jenkins在设备上运行仪器测试时,我想为它提供xml测试报告)。我通过实现“android-xml-run-listener”(https://github.com/schroepf/TestLab/tree/master/android)解决了这个问题。
要使用它,只需添加:
到你的build.gradle(注意androidTest前缀-这不会向你的生产应用添加代码!).
要使用它,请添加:
到你的AM仪器命令。
要检索XML报告文件,请用途:
z3yyvxxp3#
如果您使用
AndroidTestOrchestrator
执行测试,则生成XML测试结果并将其存储在devicesstorage/emulated/0/odo/
目录中。因此,可以使用以下方式访问它们:adb pull storage/emulated/0/odo/
我不知道为什么文档中没有提到这一点。这条路径对于真实的设备可能是不同的,我相信结果是在SDCARD的某个地方输出的。
pepwfjgg4#
我也遇到了类似的情况,发现https://docs.marathonlabs.io/非常适合我的用例。我研究过的其他选项:
adb shell am instrument -f <proto_file>
将插装结果存储在protobuf文件中,读入并转换为junit xml文件。查看am/instrument.java
的Android仪器源代码,当我们使用-f而不是-r运行它时,测试级运行时似乎保留了。但这意味着我们必须创建自己的protobuf解析器文件来自己生成Junit风格的XML文件。