使用TestDroid运行Android Instrumentation测试时,它会输出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系统属性转储到xml中,这非常有用。
我想在JUnit XML中添加元数据/属性。关于如何做到的任何想法?
答案 0 :(得分:0)
它是基于ddmlib功能完成的。
一旦测试完成,您应该使用com.android.ddmlib.testrunner.RemoteAndroidTestRunner
传递正确的com.android.ddmlib.IDevice
和com.android.ddmlib.testrunner.ITestRunListener
的实现(应该负责收集测试信息并生成junit xml)到run
方法您可以生成xml并转储到文件,最后添加com.android.ddmlib.IDevice#getProperties
。