DevSecOps - Kubernetes DevOps & Security

DevOps Pipeline

Unit Tests Basics

Unit testing is a software development practice where individual units—such as functions, methods, or classes—are tested in isolation to ensure they behave as expected. By adopting unit tests early, teams can:

BenefitDescription
Early Defect DetectionIdentify bugs at the development stage before they propagate.
Faster Feedback LoopRun tests quickly and fix issues immediately.
Lower Maintenance CostsCatching issues early reduces expensive, late-stage fixes.
Improved Code Quality & DesignWriting tests encourages cleaner, modular code and better API design.

Running Unit Tests with Maven

In a Maven-based project, execute all unit tests with:

mvn test

Maven automatically scans src/test/java (and any additional test directories you’ve configured), runs tests, and fails the build if any test does not pass:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[ERROR] Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
[INFO] -------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] -------------------------------------------------------
[INFO] Total time:  30.123 s
[INFO] Finished at: 2024-06-15T14:22:10+00:00
[INFO] -------------------------------------------------------

Note

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.

Warning

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 your pom.xml under <build><plugins>:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.8.10</version>
  <executions>
    <execution>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>report</id>
      <phase>test</phase>
      <goals>
        <goal>report</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Note

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:

mvn clean test

After completion, open:

target/site/jacoco/index.html

to view:

  • 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 SectionDescription
SummaryHigh-level percentages for lines/branches
PackagesCoverage grouped by Java packages
ClassesDetailed per-class metrics
Source CodeColor-coded, line-by-line coverage view

Thank you for reading!

Watch Video

Watch video content

Previous
Demo Jenkins Git hub Integration and Maven Build