1、起初自己安装一个springboot项目后写了个样例,通过jacoco这个想统计下单元测试覆盖率,结果被idea给带偏了,因为自己初次使用,所以想着直接用maven运行jacoco就可以像别人说的那样,在target里面生成site目录查看报告:

结果运行过程只是提示这个:

Skipping JaCoCo execution due to missing execution data file.

为了解决这个报错耗了我几天时间,但无论怎么修改配置文件仍是提示这个错误,说是jacoco.exec这个文件没有,又说fire组件的代理影响了jacoco的代理,实际是我的配置文件中就没有fire那个配置

各种试错后,因为在idea里面用jacoco这个执行springboot的一个小demo,可以正常统计出行数,我就以为是我的配置的问题:

直到有人说这个错误 Skipping JaCoCo execution due to missing execution data file.还有一种情况是没有写对应的单元测试用例导致,我才想着重新尝试,果然这次就通了,正常产生预期报告,在此写下此文章希望后来者,新手遇见此类问题可以正常运行:

2、配置junit的配置文件

在pom.xml里面增加,也就是我上一篇配置文件里面的dependency增加下面一段:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

然后重新写一个demo,此demo是我参考网上的一个小demo,在src里面增加MessageDemo,文件,同时在test的java下写他的测试类: 

保证逻辑代码与测试代码是分开的:

package com.k8s.springboot;

public class MessageDemo {
    private String message;

    public MessageDemo (String message){
        this.message = message;
    }

    public String printMessage(){
        System.out.println(this.message);
        return message;
    }
}

测试的demo代码

import com.k8s.springboot.MessageDemo;
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestMessageDemo {
    private String message="Helloworld";
    private MessageDemo messageDemo = new MessageDemo(this.message);

    @Test
    public void testPrintMessage(){
//        message = "NO";
        assertEquals(message, messageDemo.printMessage());
    }
}

但是还要在测试的下面放一个testRunner文件,来运行junit:

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
    public static void main(String[] args){
        Result result = JUnitCore.runClasses(TestMessageDemo.class);
        for (Failure failure: result.getFailures()){
            System.out.println(failure.toString());
        }
        System.out.println("测试结果:" + result.wasSuccessful());
    }
}

之后这些做完了,可以手动运行一下

这个时候终于可以执行maven了,看下jacoco是否能正常统计并生成报告:

我是在idea里面配置了本地的maven,也可以用本地的maven在命令行里面执行

mvn clean jacoco:prepare-agent install jacoco:report

当出现这个的时候,我知道确实是生成报告了:

到对应的target里面查看jacoco.exec和site都生成了:

 

 查看site里面的报告一切OK:

 希望对你有帮助!

更多推荐