gitlab项目通过ci/cd产生code coverage代码覆盖率
背景
gitlab项目需要统计code coverage ,一个同事半年多了没有实质的进展,后面说不知道怎么弄(此处省略几千字)。网络这么发达,这个问题又是很普遍的事情,怎么可能没解决方案呢?
调查方案
选择jacoco代码覆盖率统计,可能两种比较普遍的:
- 把gitlab代码拉到jenkins上,通过jacococ插件设置。
- 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(