• maven+Junit+jacoco的样例demo


    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增加下面一段:

    1. <dependency>
    2. <groupId>junit</groupId>
    3. <artifactId>junit</artifactId>
    4. <version>4.12</version>
    5. <scope>test</scope>
    6. </dependency>

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

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

    1. package com.k8s.springboot;
    2. public class MessageDemo {
    3. private String message;
    4. public MessageDemo (String message){
    5. this.message = message;
    6. }
    7. public String printMessage(){
    8. System.out.println(this.message);
    9. return message;
    10. }
    11. }

    测试的demo代码

    1. import com.k8s.springboot.MessageDemo;
    2. import org.junit.Test;
    3. import static org.junit.Assert.assertEquals;
    4. public class TestMessageDemo {
    5. private String message="Helloworld";
    6. private MessageDemo messageDemo = new MessageDemo(this.message);
    7. @Test
    8. public void testPrintMessage(){
    9. // message = "NO";
    10. assertEquals(message, messageDemo.printMessage());
    11. }
    12. }

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

    1. import org.junit.runner.JUnitCore;
    2. import org.junit.runner.Result;
    3. import org.junit.runner.notification.Failure;
    4. public class TestRunner {
    5. public static void main(String[] args){
    6. Result result = JUnitCore.runClasses(TestMessageDemo.class);
    7. for (Failure failure: result.getFailures()){
    8. System.out.println(failure.toString());
    9. }
    10. System.out.println("测试结果:" + result.wasSuccessful());
    11. }
    12. }

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

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

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

    mvn clean jacoco:prepare-agent install jacoco:report

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

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

     

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

     希望对你有帮助!

  • 相关阅读:
    (附源码)springboot在线考试系统 毕业设计 160935
    SpringMVC 05 结果跳转方式和接收请求参数及数据回显
    前端八股文142-186
    大视频文件的缓冲播放原理以及实现
    WebRTC系列-网络传输之8-连通性检测
    从Vue 2到Vue 3:深入了解路由配置的变化与升级建议
    问题:如何正确在vue中引入地图amap组件?
    隐私计算综述
    postgresql源码学习(十五)—— 行锁③-死锁检测
    计算机毕业设计springboot+vue基本微信小程序的外卖点餐订餐平台
  • 原文地址:https://blog.csdn.net/m0_37570494/article/details/125602862