简体   繁体   中英

Ant JUnit Test case failure report not reporting testcase name

I am working on parsing the xml Junit reports generated with Ant Task. I see for pass test cases the report shows exact name of the testcase(method) executed, but not for failing test case.

Can be verified below....

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

I want the name of failing testcase also to appear in the xml, what is the configuration I should use?

Here is what my ant task looks like

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

In my experience, the only time you get the error attribute without the accompanying testcase attribute is when the test just bombs, as it does when it can't resolve the class. Here's an example...

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

Annoying, but since it's a non-functioning test anyway I can accept it since the reference has to be fixed to even run the test and get results anyway. From what I see in your example above, you actually are getting the testcase name for your erroring test. The package is "junit.framework", class "TestSuite", and your actual test name is "com.gui.pool.ValidPoolTest". Is this not what you expected? I can't verify it, but here is what I get for an error and I can validate that the testcase and error attributes match up correctly...

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM