我正在分析使用Ant Task生成的xml Junit报告。我看到,对于通过的测试用例,报告显示了执行的测试用例(方法)的确切名称,但对于失败的测试用例则没有。
可以在下面进行验证。。。。
<testcase classname="com.gui.LoginTest" name="blankFieldsTest" time="2.222" />
<testcase classname="com.gui.LoginTest" name="wrongUsernameOrPassword" time="2.233" />
<testcase classname="com.gui.LoginTest" name="successfulLoginTest" time="13.12" />
<testcase classname="junit.framework.TestSuite" name="com.gui.pool.ValidPoolTest" time="0.001">
<error message="Error communicating with the remote browser. It may have died.
Build info: version: '2.33.0', revision: '4e90c97', time: '2013-05-22 15:33:32'
System info: os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_21'
Driver info: driver.version: RemoteWebDriver" type="org.openqa.selenium.remote.UnreachableBrowserException">org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.33.0', revision: '4e90c97', time: '2013-05-22 15:33:32'
System info: os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_21'
Driver info: driver.version: RemoteWebDriver
</error>
</testcase>
我希望失败的测试用例的名称也出现在xml中,我应该使用什么配置?
以下是我的蚂蚁任务看起来像
<target name="test.helper" description="executed the junit task on compiled code and creates .xml reports">
<mkdir dir="${unit.test.dir}" />
<junit dir="${unit.test.dir}" fork="yes" printsummary="on" haltonfailure="no">
<batchtest fork="yes" todir="${unit.test.dir}">
<fileset dir="${test.classes.dir}">
<include name="**/TestSuite.class" />
</fileset>
</batchtest>
<formatter type="xml" />
<classpath>
<pathelement path="${test.classes.dir}" />
<fileset id="distjars" dir="${dist.lib.dir}">
<include name="**/*.jar" />
<exclude name="**/*_test.jar" />
</fileset>
<fileset id="selenium.jars" dir="${local.selenium.dir}/">
<include name="**/*.jar" />
</fileset>
</classpath>
</junit>
</target>
根据我的经验,唯一一次获得没有附带测试用例属性的error属性是在测试爆炸时,就像它无法解析类时一样。下面是一个例子。。。
</properties>
<error message="thinClientTests.userTests.NewUserTest" type="java.lang.ClassNotFoundException">java.lang.ClassNotFoundException: thinClientTests.userTests.NewUserTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
很烦人,但由于这是一个不起作用的测试,我可以接受它,因为必须修复引用才能运行测试并获得结果。从我在上面的例子中看到的,您实际上得到了错误测试的测试用例名称。包是"junit.framework",类是"TestSuite",而您的实际测试名称是"com.gui.pool.ValidPoolTest"。这不是您所期望的吗?我无法验证它,但以下是我从错误中得到的信息,我可以验证测试用例和错误属性是否正确匹配。。。
<testcase classname="thinClientTests.permissionTests.SuperuserLoginMenuCheck" name="testSuperuserMenusFirefox" time="284.066">
<error message="Error communicating with the remote browser. It may have died.
Build info: version: '2.31.0', revision: '1bd294d', time: '2013-02-27 20:52:59'
System info: os.name: 'Windows Server 2012', os.arch: 'x86', os.version: '6.2', java.version: '1.7.0_11'
Driver info: driver.version: RemoteWebDriver" type="org.openqa.selenium.remote.UnreachableBrowserException">