JaCoCo Maven plugin

Pokrycie kodu testami z użyciem JaCoCo Maven plugin

JaCoCo Maven plugin to wtyczka która umożliwia wygenerowanie raportu z pokrycia kodu źródłowego testami. Na potrzeby tego artykułu wykorzystamy prostą aplikacje napisaną w Spring Boot weryfikując jej pokrycie (z ang. Test Coverage). Aplikacja znajduje się tutaj: https://github.com/mwarycha/JavaLeader.pl/tree/master/put-map-struct-jacoco

W pliku pom.xml znajduje się dołączony plugin jacoco z następującą konfiguracją:

<plugin>
	<groupId>org.jacoco</groupId>
	<artifactId>jacoco-maven-plugin</artifactId>
	<version>0.8.7</version>
	<configuration>
		<excludes>
			<exclude>pl/javaleader/putmapstruct/model/*</exclude>
			<exclude>pl/javaleader/putmapstruct/PutMapStructApplication.class</exclude>
		</excludes>
	</configuration>
	<executions>
		<execution>
			<goals>
				<goal>prepare-agent</goal>
			</goals>
		</execution>
		<execution>
			<id>report</id>
			<phase>prepare-package</phase>
			<goals>
				<goal>report</goal>
			</goals>
		</execution>
		<execution>
			<id>jacoco-check</id>
			<goals>
				<goal>check</goal>
			</goals>
			<configuration>
				<rules>
					<rule>
						<element>PACKAGE</element>
						<limits>
							<limit>
								<counter>LINE</counter>
								<value>COVEREDRATIO</value>
								<minimum>0.5</minimum>
							</limit>
						</limits>
					</rule>
				</rules>
			</configuration>
		</execution>
	</executions>
</plugin>
  • generowanie raportu odbędzie się w fazie prepare-package,
  • build aplikacji nie przejdzie jeśli nie będzie spełnione minimum 50% pokrycia kodu testami dla każdej klasy za wyjątkiem klas użytych do testów.

Kiedy pokrycie kodu testami nie będzie spełnione wystąpi błąd podobny do zamieszczonego niżej:

Rule violated for package pl.javaleader.putmapstruct.controller: lines covered ratio is 0.07, but expected minimum is 0.50

Raport wykazał tylko 4% pokrycia kodu testami. Wygenerowany raport znajduje się w katalogu ./target/site/jacoco:

Poprawmy ten wynik dopisując testy jednostkowe aby uzyskać akceptowalny wynik pokrycia kodu testami:

Jacoco udostępnia następujące podstawowe metryki:

  • Lines coverage – wskaźnik pokrycia linii kodu źródłowego testami (komentarze, elementy samego języka np. klamry są ignorowane),
  • Branches coverage – wskaźnik wykorzystania i pokrycia instrukcji warunkowych,
  • Cyclomatic complexity – złożoność cyklomatyczna (liczba niezależnych ścieżek w aplikacji).

Zobacz kod na GitHubie i zapisz się na bezpłatny newsletter!

.

Leave a comment

Your email address will not be published.


*