单元测试报告与覆盖率报告——mac电脑下Jenkins集成Junit和Jacoco

一、jenkins安装

brew install jenkins

用brew安装比较方便一些,具体安装与启动jenkins见下面链接
https://blog.csdn.net/u014050467/article/details/103319260

二、git准备一个demo项目

因为jenkins要连接git来部署,生产环境也是要这样做的,所以我们要把项目传到github上。
这里项目内容我们不关心,重点是pom.xml文件和Test类。

2.1 pom.xml

和junit、jacoco有关的pom.xml文件如下:

2.1.1 依赖部分:

前两个是spring集成test,之后是junit和jacoco的依赖。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.0.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.1</version>
    <scope>test</scope>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.6</version>
</dependency>

2.1.2 插件部分

主要是maven-surefire-plugin和jacoco-maven-plugin这两个插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M5</version>
                <configuration>
                    <skipTests>false</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>false</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.6</version>
                <configuration>
                    <skip>false</skip>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <configuration>
                            <outputDirectory>${basedir}/target/coverage-reports</outputDirectory>
                        </configuration>
                        <id>report</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2.2 test类

  • 注意这里我们用的是Junit,不是testng,这两个包同时引入会有冲突,maven-surefire-plugin默认优先识别testng,会导致打包时候无法识别到测试方法。
  • 还有就是注意包名和main中保持一致,否则也会导致无法运行测试方法。
package com.quan.redistest.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @Author: KD
 * @Date: 2021/2/8 3:35 下午
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestClass {

    @Autowired
    TestService testService;

    @Test
    public void test(){
        testService.saveUserAccessLog();
        System.out.println("哈哈");
    }

    @Test
    public void testAdd(){
        int res = testService.add(1,2);
        System.out.println(res);
    }
}

三、jenkins上插件安装

3.1 进入jenkins管理界面

3.2 进入插件管理界面

3.3 下载对应的插件

3.3.1 jacoco插件

3.3.2 junit插件

四、jenkins上新建任务

4.1 新建任务

4.2 选择任务类型

这里选择自由风格

4.3 源码管理

这里填写自己的git地址,账号密码,选择正确的分支

4.4 构建环境

首先选择Maven构建

选择maven版本和要执行的命令

4.5 构建后操作

选择junit report和jacoco report

无需修改使用默认的填写即可。
点击保存完成配置。

五、实现效果

六、存在的坑

主要的坑都在demo项目中,版本问题居多

6.1 jenkins启动

jenkins启动时候可能会报错,如下图所示:

这里是要求必须是java8或java11,这两个是稳定版本,其他版本都不能启动。

6.2 Test类内方法没有被识别


可以看到各项数据都是0,这是因为我们引入了testng包导致的,默认maven-surefire-plugin是跑testng的数据,但实际我们用的是junit。把testng依赖注释掉即可。

6.3 mvn clean install时报错


这个是maven-surefire-plugin包版本问题,两种解决办法,降低jdk版本或提高maven-surefire-plugin包版本。

6.4 jacoco执行被跳过了

如果maven-surefire-plugin的pom引入了字符编码,如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M5</version>
    <configuration>
        <skipTests>false</skipTests>
        <argLine>-Dfile.encoding=UTF-8</argLine>
    </configuration>
</plugin>

会发现执行时结果是这样:

jacoco的执行被skip了,这是因为maven-surefire-plugin和jacoco-maven-plugin的配置冲突了,把argLine这一行如下修改即可:

<argLine>${argLine} -Dfile.encoding=UTF-8</argLine>

七、参考资料

  • https://ningyu1.github.io/site/post/77-jenkins-sonarqube-jacoco-junit/
  • https://my.oschina.net/fastjrun/blog/3114088
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值