使用 "adb shell am instrument" 时如何检索测试结果

How to retrieve test results when using "adb shell am instrument"

我正在使用以下命令在我的 Android 设备中执行一些测试:

adb shell am instrument -w package.name/android.test.runner.AndroidJUnitRunner

我可以通过STDOUT看到测试进度和简单的结果。但是,此过程是否还会在设备内生成结果文件(xml、html 等)?如果是,它存储在哪里?

谢谢

But, does this process also generates a results file inside the device (xml, html, etc)?

不,不是。

报告生成通常在比 'am instrument' 更高的层处理。如果您 运行 您的测试使用 Gradle,它应该会为您生成报告。我相信这也是 Android Studio 所依赖的。

如果您必须从测试本身生成报告,您可以使用自定义测试 运行ner。请参阅此答案以了解一种方法:http://www.whosebug.com/a/5574418/1999084

我遇到了类似的问题(我想在我的 Jenkins 在设备上运行仪器测试时获得 xml 测试报告)。我通过实施 "android-xml-run-listener" (https://github.com/schroepf/TestLab/tree/master/android).

解决了这个问题

要使用它,只需添加:

androidTestCompile 'de.schroepf:android-xml-run-listener:0.1.3'

到您的 build.gradle(注意 androidTest 前缀 - 这不会将代码添加到您的生产应用程序!)。

要使用它,请添加:

-e listener de.schroepf.androidxmlrunlistener.XmlRunListener

到您的 am 仪器命令。

要检索 XML 报告文件,请使用:

adb pull /storage/emulated/0/Android/data/<your-app-package-name>/files/report.xml

如果您使用 AndroidTestOrchestrator 执行测试,您的 XML 测试结果将生成并存储在设备 storage/emulated/0/odo/ 目录中。因此可以使用以下方式访问它们:

adb pull storage/emulated/0/odo/

我不确定为什么文档中的任何地方都没有提到这一点。 对于真实设备,这条路径可能会有所不同,我相信结果会输出到 SD 卡上的某个地方。