我有一个格式如下的TestNG xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MySuite" parallel="tests" thread-count="5">
<parameter name="browser" value="firefox" />
<parameter name="remoteOrLocal" value="local" />
<parameter name="environment" value="####" />
<parameter name="remoteAddress" value="0.0.0.0" />
<test name="1" >
<classes>
<class name="tests.Test1"/>
</classes>
</test>
<test name="2">
<classes>
<class name="tests.Test2"/>
</classes>
</test>
<test name="3">
<classes>
<class name="tests.Test3"/>
</classes>
</test>
</suite
但是我使用了一个需要junit输出的测试用例管理工具,这不应该是一个问题,因为TestNG会自动生成junit输出。
问题是: 在名为junitreports的测试输出下的目录中,每个类都有一个junit报告,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="fadavis-HP-EliteBook-8470p" name="tests.Test1" tests="3" failures="1" timestamp="15 May 2015 19:25:12 GMT" time="0.023" errors="1">
<testcase name="method1" time="0.012" classname="tests.Test1"/>
<testcase name="method3" time="0.004" classname="tests.Test1"/>
<testcase name="method2" time="0.007" classname="tests.Test1">
<error type="java.lang.AssertionError" message="null">
<![CDATA[java.lang.AssertionError: null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.fail(Assert.java:101)
at tests.Test1.method2(Test1.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
]]>
</error>
</testcase> <!-- method2 -->
</testsuite> <!-- tests.Test1 -->
其中套件名称与类名相同。如何只使用一组TestNG测试获得一个Junit报告文件?
答案 0 :(得分:1)
在MySuite
的同一级别上应该有一个名为junitreports
的目录(基本上是<suite name="MySuite" parallel="tests" thread-count="5">
的名称),里面是所有测试的一个XML。
这是由org.testng.reporters.JUnitXMLReporter
生成的,如果它不存在,请尝试将此记者添加到您的听众。