问题在于Sonarqube的项目分析覆盖率为0%

问题描述 投票:0回答:1

我想用

SonarQube
来分析我的SpringBoot项目。我发布了单元测试,但一切正常。问题是覆盖率是0%。我添加了
Jacoco
依赖项,但问题没有改变。

我使用不同的命令例如:

mvn sonar:sonar
mvn sonarscanner
,但是在执行此命令之一后:
mvn clean test jacoco:report
mvn -Dtest=NomDeLaClasseTest test
mvn clean install
mvn clean package
mvn clean compile

这是我的 pom.xml:

<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.2.2</version>
                <relativePath/>
            </parent>
            <groupId>com.soremed</groupId>
            <artifactId>Agio2Soremed</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <name>Agio2Soremed</name>
            <description>Créer une application Spring Boot qui gère les relevés bancaires.</description>
            <properties>
                <java.version>17</java.version>
                <sonar.host.url>http://localhost:9000</sonar.host.url>
                <sonar.token><-my token-></sonar.token>
                <sonar.projectKey>spring-boot-demo</sonar.projectKey>
                <sonar.projectName>spring boot demo</sonar.projectName>
                <sonar.projectVersion>1.0</sonar.projectVersion>
            </properties>

            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-data-jpa</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </dependency>
                <dependency>
                    <groupId>com.mysql</groupId>
                    <artifactId>mysql-connector-j</artifactId>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                    <version>5.2.3</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                    <version>5.2.3</version>
                </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.30</version>
                    <scope>provided</scope>
                </dependency>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.12</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-all</artifactId>
                    <version>1.10.19</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.12</version>
                </dependency>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-java</artifactId>
                    <version>4.27.0</version>
                </dependency>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-chrome-driver</artifactId>
                    <version>4.27.0</version>
                </dependency>
                <dependency>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>5.0.0.4389</version>
                </dependency>
                <dependency>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                    <version>7.1.0</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>17</source>
                            <target>17</target>
                            <annotationProcessorPaths>
                                <path>
                                    <groupId>org.projectlombok</groupId>
                                    <artifactId>lombok</artifactId>
                                    <version>1.18.30</version>
                                </path>
                            </annotationProcessorPaths>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.22.2</version>
                        <configuration>
                            <reportFormat>xml</reportFormat>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.8.8</version>
                        <executions>
                            <execution>
                                <phase>test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId>
                        <artifactId>sonar-maven-plugin</artifactId>
                        <version>5.0.0.4389</version>
                    </plugin>
                </plugins>
            </build>
        </project>
spring-boot unit-testing sonarqube code-coverage jacoco
1个回答
0
投票

我看到 jacoco 插件的准备代理目标附加到 Maven 构建的测试阶段,这可能会使准备代理目标在 Surefire 插件之后运行,即在测试用例之后运行。覆盖率报告可能显示 0%,因为测试用例从未使用 jacoco 进行检测。我的猜测是,如果我们将准备代理目标纠正为在执行测试用例之前运行,那么我们应该会看到覆盖率。 你可以尝试下面的 jacoco maven 插件配置吗

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.8</version>
    <executions>
        <execution>
            <id>default-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>default-report</id>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>
© www.soinside.com 2019 - 2024. All rights reserved.