Skip to content

Latest commit

 

History

History
93 lines (86 loc) · 5.59 KB

README.md

File metadata and controls

93 lines (86 loc) · 5.59 KB

JUnit Report

This is a reporter for TestNG which generates the reports in xml format adhering to the JUnit test result schema for the Apache Ant JUnit and JUnitReport tasks.

The schema being used is referred from the GitHub repository: JUnit-Schema.

To get started, just add the following as a maven dependency:

<dependency>
    <groupId>com.rationaleemotions</groupId>
    <artifactId>junitreport</artifactId>
    <version>1.0.0</version>
</dependency>

Merely adding this artifact as a dependency should suffice. Service loader mechanism is used to wire in this listener. So there is no need to explicitly add the listener via the <listener> tag (or) via the @Listeners annotation.

Here's a sample of how a generated report can look like:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<testsuite name="SecondTest" timestamp="2017-07-29T20:16:12.846+05:30" hostname="necropolis.local" tests="4"
           failures="1" errors="2">
    <properties>
        <property name="errors" value="2"/>
        <property name="failures" value="1"/>
        <property name="ignored" value="0"/>
    </properties>
    <testcase name="@BeforeClass beforeClass" classname="com.rationaleemotions.AnotherApp" time="1"/>
    <testcase name="passTestMethod" classname="com.rationaleemotions.AnotherApp" time="5001"/>
    <testcase name="failTestMethod" classname="com.rationaleemotions.AnotherApp" time="2">
        <failure message="Simulating a failure" type="java.lang.AssertionError"/>
    </testcase>
    <testcase name="errorTestMethod" classname="com.rationaleemotions.AnotherApp" time="1">
        <error message="ERRORED due to : Simulating a failure" type="java.lang.RuntimeException">
            java.lang.RuntimeException: Simulating a failure
            at com.rationaleemotions.AnotherApp.errorTestMethod(AnotherApp.java:31)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
            at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
            at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
            at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
            at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
            at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
            at org.testng.TestRunner.privateRun(TestRunner.java:744)
            at org.testng.TestRunner.run(TestRunner.java:602)
            at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
            at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
            at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
            at org.testng.SuiteRunner.run(SuiteRunner.java:289)
            at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
            at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
            at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
            at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
            at org.testng.TestNG.runSuites(TestNG.java:1144)
            at org.testng.TestNG.run(TestNG.java:1115)
            at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
            at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
        </error>
    </testcase>
    <testcase name="skipTestMethod" classname="com.rationaleemotions.AnotherApp" time="0">
        <error message="SKIPPED due to : Method AnotherApp.skipTestMethod()[pri:0, instance:com.rationaleemotions.AnotherApp@483bf400] depends on not successfully finished methods"
               type="java.lang.Throwable">java.lang.Throwable: Method AnotherApp.skipTestMethod()[pri:0,
            instance:com.rationaleemotions.AnotherApp@483bf400] depends on not successfully finished methods
            at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1084)
            at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
            at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
            at org.testng.TestRunner.privateRun(TestRunner.java:744)
            at org.testng.TestRunner.run(TestRunner.java:602)
            at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
            at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
            at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
            at org.testng.SuiteRunner.run(SuiteRunner.java:289)
            at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
            at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
            at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
            at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
            at org.testng.TestNG.runSuites(TestNG.java:1144)
            at org.testng.TestNG.run(TestNG.java:1115)
            at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
            at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
        </error>
    </testcase>
    <system-out>Test message from beforeClass()
        Test message from testMethod()
    </system-out>
</testsuite>