Bootstrap

gitlab项目通过ci/cd产生code coverage代码覆盖率

背景

gitlab项目需要统计code coverage ,一个同事半年多了没有实质的进展,后面说不知道怎么弄(此处省略几千字)。网络这么发达,这个问题又是很普遍的事情,怎么可能没解决方案呢?

调查方案

选择jacoco代码覆盖率统计,可能两种比较普遍的:

  1. 把gitlab代码拉到jenkins上,通过jacococ插件设置。
  2. gitlab设置runner, runner执行pipeline,生成覆盖率
    我觉得这两本质都差不多,都是把代码拉下来,执行相应的job,然后拿到数据。简单方便搭建起见,选择第二种。

gitlab项目gitlab-ci.yml设置

这里的以spring boot的gs-spring-boot项目 complete为例。
添加一个service文件夹,创建类:


public class MessageBuilder {
   
    public String getMessage(String name) {
   

        StringBuilder result = new StringBuilder();

        if (name == null || name.trim().length() == 0) {
   

            result.append("Please provide a name!");

        } else {
   

            result.append("Hello " + name);

        }
        return result.toString();
    }
}


同时创建一个测试类:


class MessageBuilderTest {
   

    @Test
    void getMessageNull() {
   
        MessageBuilder obj = new MessageBuilder();
        assertEquals("Please provide a name!",obj.getMessage(
;