| Benefit | Description |
|---|---|
| Early Defect Detection | Identify bugs at the development stage before they propagate. |
| Faster Feedback Loop | Run tests quickly and fix issues immediately. |
| Lower Maintenance Costs | Catching issues early reduces expensive, late-stage fixes. |
| Improved Code Quality & Design | Writing tests encourages cleaner, modular code and better API design. |
Running Unit Tests with Maven
In a Maven-based project, execute all unit tests with:src/test/java (and any additional test directories you’ve configured), runs tests, and fails the build if any test does not pass:
By default, Maven looks for test classes matching
**/*Test.java under src/test/java. You can customize this in the <build><plugins> section of your pom.xml.A failing test will stop the Maven build. Ensure you fix or temporarily disable flaky tests to keep CI pipelines green.
Measuring Code Coverage with JaCoCo
JaCoCo is the de facto tool for generating Java code coverage reports. When integrated into Maven, it produces detailed HTML reports showing line and branch coverage.1. Add the JaCoCo Plugin
Include the following snippet in yourpom.xml under <build><plugins>:
You can configure coverage thresholds to enforce minimum percentages. If thresholds are not met, the build will fail.
2. Generate the Report
Run your tests and generate the coverage report:- Overall Coverage: Total percentage of covered code.
- Per-Package/Class Breakdown: Drill down into modules.
- Covered vs. Uncovered Lines: Visual indicators in source code.
| Report Section | Description |
|---|---|
| Summary | High-level percentages for lines/branches |
| Packages | Coverage grouped by Java packages |
| Classes | Detailed per-class metrics |
| Source Code | Color-coded, line-by-line coverage view |