How to view Integration tests on SonarQube

I’m using SonarQube 9.1. I have a Maven project with both unit and integration tests, executed with Surefire and Failsafe. I’m using JaCoCo to collect and merge coverage reports.

I execute and send all of this to SonarQube with the following command: mvn clean verify sonar:sonar.

When I inspect my project on SonarQube, the coverage is okay because unit and integration tests are included. However, there is no way to see the integration tests. There is only a link for units. This is a bit confusing for me because the coverage is for all tests, but I only see units. So, am I missing something? Is there a way to show integration tests as well?

Here is my pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.1</version>
		<relativePath />
	</parent>
	<groupId>...</groupId>
	<artifactId>...</artifactId>
	<version>...</version>
	<name>...</name>
	<properties>
		<java.version>17</java.version>
		<skipTest>false</skipTest>
		<skipIntegrationTest>false</skipIntegrationTest>
		<!-- JaCoCo e Sonar Properties -->
		<sonar.projectKey>myPrjKey</sonar.projectKey>
		<sonar.projectName>myPrjName</sonar.projectName>
		<sonar.plugin.version>3.7.0.1746</sonar.plugin.version>
		<jacoco.version>0.8.8</jacoco.version>
		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
		<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
		<sonar.coverage.exclusions>*/*Exception.java,**/*Dto.java</sonar.coverage.exclusions>
		<sonar.coverage.jacoco.xmlReportPaths>${project.build.directory}/site/jacoco-merged-test-coverage-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
		<sonar.language>java</sonar.language>
	</properties>
	<dependencies>
		...
	</dependencies>
	<profiles>
		<profile>
			<id>skiptest</id>
			<properties>
				<skipIntegrationTest>true</skipIntegrationTest>
				<skipTest>true</skipTest>
			</properties>
		</profile>
	</profiles>
	<build>
		<resources>
			..
		</resources>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.sonarsource.scanner.maven</groupId>
					<artifactId>sonar-maven-plugin</artifactId>
					<version>${sonar.plugin.version}</version>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>${jacoco.version}</version>
				<executions>
					<execution>
						<id>before-unit-test-execution</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<destFile>${project.build.directory}/jacoco-output/jacoco-unit-tests.exec</destFile>
						</configuration>
					</execution>
					<execution>
						<id>after-unit-test-execution</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/jacoco-output/jacoco-unit-tests.exec</dataFile>
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-unit-test-coverage-report</outputDirectory>
						</configuration>
					</execution>
					<execution>
						<id>before-integration-test-execution</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<destFile>${project.build.directory}/jacoco-output/jacoco-integration-tests.exec</destFile>
						</configuration>
					</execution>
					<execution>
						<id>after-integration-test-execution</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/jacoco-output/jacoco-integration-tests.exec</dataFile>
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-integration-test-coverage-report</outputDirectory>
						</configuration>
					</execution>
					<execution>
						<id>merge-unit-and-integration</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>merge</goal>
						</goals>
						<configuration>
							<fileSets>
								<fileSet>
									<directory>${project.build.directory}/jacoco-output/</directory>
									<includes>
										<include>*.exec</include>
									</includes>
								</fileSet>
							</fileSets>
							<destFile>${project.build.directory}/jacoco-output/merged.exec</destFile>
						</configuration>
					</execution>
					<execution>
						<id>create-merged-report</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${project.build.directory}/jacoco-output/merged.exec</dataFile>
							<outputDirectory>${project.reporting.outputDirectory}/jacoco-merged-test-coverage-report</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skipTests>${skipTest}</skipTests>
					<argLine>${argLine}</argLine>
					<excludes>
                        <exclude>**/IT*.java</exclude>
                    </excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<skipTests>${skipIntegrationTest}</skipTests>
					<argLine>${argLine}</argLine>
				</configuration>
			</plugin>
			...
		</plugins>
	</build>
</project>

Hi,

Welcome to the community!

Your version is past EOL. You should upgrade to either the latest version or the current LTS at your earliest convenience. Your upgrade path is:

9.1 → 9.9.1 → 10.1 (last step optional)

You may find these resources helpful:

If you have questions about upgrading, feel free to open a new thread for that here.

Regarding your question, for both coverage and execution reports, we go strictly by what’s in the report you passed in to analysis. If the integration tests are not reflected in your execution reports (and/or defined as a part of sonar.tests), they won’t show up in SonarQube.

 
HTH,
Ann