Java Ant JUnit测试用例失败报告未报告测试用例名称

Java Ant JUnit测试用例失败报告未报告测试用例名称,java,testing,selenium,ant,junit,Java,Testing,Selenium,Ant,Junit,我正在解析使用Ant任务生成的xml Junit报告。我看到对于通过的测试用例,报告显示了执行的测试用例(方法)的确切名称,但是对于失败的测试用例,报告没有显示 可以在下面进行验证 <testcase classname="com.gui.LoginTest" name="blankFieldsTest" time="2.222" /> <testcase classname="com.gui.LoginTest" name="wrongUsernameOrPassword

我正在解析使用Ant任务生成的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.&#xa;Build info: version: &apos;2.33.0&apos;, revision: &apos;4e90c97&apos;, time: &apos;2013-05-22 15:33:32&apos;&#xa;System info: os.name: &apos;Windows Server 2008 R2&apos;, os.arch: &apos;amd64&apos;, os.version: &apos;6.1&apos;, java.version: &apos;1.7.0_21&apos;&#xa;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: &apos;2.33.0&apos;, revision: &apos;4e90c97&apos;, time: &apos;2013-05-22 15:33:32&apos;
System info: os.name: &apos;Windows Server 2008 R2&apos;, os.arch: &apos;amd64&apos;, os.version: &apos;6.1&apos;, java.version: &apos;1.7.0_21&apos;
Driver info: driver.version: RemoteWebDriver
</error>
  </testcase>

org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。
生成信息:版本:&apos;2.33.0&apos;,修订版:&apos;4e90c97&apos;,时间:&apos;2013-05-22 15:33:32&apos;
系统信息:os.name:&apos;Windows Server 2008 R2&apos;,操作系统:apos;amd64&apos;,操作系统版本:&apos;6.1&apos;,java.version:&apos;1.7.0_21&apos;
驱动程序信息:Driver.version:RemoteWebDriver
我希望失败的testcase的名称也出现在xml中,我应该使用什么配置

下面是我的ant任务的样子

<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>

根据我的经验,唯一一次在没有附带testcase属性的情况下获得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)

java.lang.ClassNotFoundException:thinClientTests.userTests.NewUserTest
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:186)
很烦人,但由于它是一个没有功能的测试,我可以接受它,因为引用必须被修复,以便运行测试并获得结果。从我在上面示例中看到的情况来看,您实际上得到了错误测试的测试用例名称。包是“junit.framework”,类是“TestSuite”,实际测试名称是“com.gui.pool.ValidPoolTest”。这不是你所期望的吗?我无法验证它,但这是我得到的错误,我可以验证testcase和error属性是否正确匹配

  <testcase classname="thinClientTests.permissionTests.SuperuserLoginMenuCheck" name="testSuperuserMenusFirefox" time="284.066">
      <error message="Error communicating with the remote browser. It may have died.&#xa;Build info: version: &apos;2.31.0&apos;, revision: &apos;1bd294d&apos;, time: &apos;2013-02-27 20:52:59&apos;&#xa;System info: os.name: &apos;Windows Server 2012&apos;, os.arch: &apos;x86&apos;, os.version: &apos;6.2&apos;, java.version: &apos;1.7.0_11&apos;&#xa;Driver info: driver.version: RemoteWebDriver" type="org.openqa.selenium.remote.UnreachableBrowserException">

不过,testcase名称是“com.gui.pool.ValidPoolTest”,我对获取方法的实际名称感兴趣,就像测试通过时出现的名称一样。""