XML and HTML reports in JUnit - Build an Automation Script
package com.example; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; public class SampleTest { @Test void testThatPasses() { assertTrue(5 > 1, "5 is greater than 1"); } @Test void testThatFails() { assertEquals(2, 1 + 1, "1 + 1 should equal 2"); fail("Intentional failure for demonstration"); } } /* To run and generate reports: 1. Run tests with Maven: mvn clean test 2. XML reports will be in target/surefire-reports/*.xml 3. To generate HTML report, add to pom.xml: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>3.0.0-M7</version> <executions> <execution> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 4. Run: mvn verify 5. HTML report will be in target/site/surefire-report.html 6. Open the HTML report in a browser to see test summary. */
This JUnit 5 test class has two test methods: one that passes and one that fails intentionally.
Running mvn clean test executes the tests and generates XML reports in the target/surefire-reports directory.
The Maven Surefire Report Plugin is configured to generate an HTML report during the verify phase, which you run with mvn verify. The HTML report is saved in target/site/surefire-report.html.
Opening the HTML report in a browser shows a clear summary of passed and failed tests, making it easy to understand test results.
This setup follows best practices by using descriptive test names, standard Maven directories, and built-in plugins for report generation.
Now add data-driven testing with 3 different input values and verify reports reflect all test cases
Practice
Solution
Step 1: Understand XML report role
XML reports save test results in a structured way that other tools can process.Step 2: Compare with other options
HTML reports display results in browsers, not XML. XML does not speed tests or write test cases.Final Answer:
To store test results in a structured format for tools to read -> Option AQuick Check:
XML reports = structured data storage [OK]
- Confusing XML reports with HTML display
- Thinking XML speeds up test execution
- Assuming tests are written in XML
Solution
Step 1: Identify Maven reporting plugin
The Surefire Report plugin generates XML and HTML reports after tests run.Step 2: Check other commands
"mvn clean install" runs build and tests but does not generate reports alone. Others are invalid commands.Final Answer:
mvn surefire-report:report -> Option CQuick Check:
Surefire report plugin = XML + HTML reports [OK]
- Using 'mvn clean install' expecting reports
- Trying invalid Maven commands
- Confusing report generation with test execution
<testcase classname="CalculatorTest" name="testAdd" time="0.005"/>
What does the attribute
time="0.005" represent?Solution
Step 1: Understand XML attribute 'time'
The 'time' attribute records how long the test took to execute, in seconds.Step 2: Eliminate other meanings
Timeout is set elsewhere, assertions count is not stored here, and priority is unrelated.Final Answer:
The time in seconds the test took to run -> Option AQuick Check:
time attribute = execution duration [OK]
- Confusing time with timeout limit
- Thinking time counts assertions
- Assuming time is test priority
Solution
Step 1: Check report generation setup
If Surefire plugin is not configured properly, no reports are created.Step 2: Analyze other options
Compilation errors stop tests but usually show errors; corrupted XML won't prevent HTML generation if configured; HTML reports show all tests, not just failures.Final Answer:
The Surefire plugin is not configured to generate reports -> Option BQuick Check:
Missing HTML report = plugin config issue [OK]
- Assuming HTML reports only for failed tests
- Ignoring plugin configuration
- Blaming XML corruption without evidence
Solution
Step 1: Understand report generation process
JUnit XML reports are transformed to HTML using XSLT stylesheets, which control layout and content.Step 2: Evaluate customization options
Editing XML directly is impractical; changing test names is limited; switching frameworks is unnecessary if customization is possible.Final Answer:
Modify the XSLT files used to transform XML to HTML -> Option DQuick Check:
Customize HTML via XSLT transformation [OK]
- Trying to edit XML reports directly
- Relying on test names for report styling
- Switching frameworks unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
