使用TestDroid运行Android仪器测试时,它会输出Junit XML。例如,
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<testsuites>
<testsuite errors="0" failures="1" hostname="Acer Iconia Tab A1-810 - YSF6Y9HE6SQCOJPV" name="ExampleInstrumentedTest" package="com.myco.androidtest" tests="2" time="0.0000" timestamp="Fri Sep 29 21:29:49 CEST 2017">
<testcase classname="com.myco.androidtest.ExampleInstrumentedTest" name="someTest" time="0.0000"/>
<testcase classname="com.myco.androidtest.ExampleInstrumentedTest" name="someOtherTest" time="0.0000">
<failure message="" type="">java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
...
</failure>
</testcase>
</testsuite>
<properties>
...
<property name="ro.product.manufacturer" value="Acer"/>
<property name="ro.serialno" value="32206769320"/>
<property name="ro.product.name" value="a1-810_ww_gen1"/>
<property name="ro.build.version.release" value="4.2.2"/>
<property name="ro.build.version.sdk" value="17"/>
<property name="ro.build.fingerprint" value="acer/a1-810_ww_gen1/mango:4.2.2/JDQ39/1381313631:user/release-keys"/>
<property name="ro.product.cpu.abi" value="armeabi-v7a"/>
<property name="ro.product.model" value="A1-810"/>
</properties>
</testsuites>
除了关于测试的元数据外,似乎他们正在将Java System属性倾倒到XML中,这非常有用。
我想添加到Junit XML中的元数据/属性。关于如何完成的任何想法?
它是基于ddmlib功能完成的。您应该使用com.android.ddmlib.testrunner.RemoteAndroidTestRunner
传递正确的com.android.ddmlib.IDevice
,并实现com.android.ddmlib.testrunner.ITestRunListener
(应负责收集测试信息并生成JUNIT XML)到run
方法,一旦测试完成,您就可以生成XML并转储为文件,并在末尾添加com.android.ddmlib.IDevice#getProperties
。<<<<<<<<<<<<<</p>