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

<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:

 希望对你有帮助!

好的,我会尽可能详细地回答你的问题。 首先,我们需要了解一下这几个工具的作用: - Eclipse:Java开发的集成开发环境(IDE) - MavenJava项目管理工具,可以自动化构建、依赖管理、打包等操作 - Junit5:Java的单元测试框架,可以方便地编写和执行单元测试 - Pitest:Java的变异测试框架,可以自动生成变异体并运行测试用例,用于评估测试用例的质量。 接下来,我们按照以下步骤来进行参数化测试: 1. 在 Eclipse 中创建 Maven 项目,可以选择使用 Maven 的 Quickstart 模板来创建。 2. 在 pom.xml 文件中添加 Junit5 和 Pitest 的依赖: ```xml <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.pitest</groupId> <artifactId>pitest-junit5-plugin</artifactId> <version>0.13</version> </dependency> ``` 3. 编写测试类,使用 Junit5 的 ParameterizedTest 注解来标记参数化测试方法,并使用 ValueSource 注解来指定参数值: ```java import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; class CalculatorTest { private final Calculator calculator = new Calculator(); @ParameterizedTest @ValueSource(ints = {1, 2, 3}) void testAdd(int value) { int result = calculator.add(value, 2); Assertions.assertEquals(value + 2, result); } } ``` 4. 运行测试,可以使用 Maven 命令 `mvn test` 来执行所有测试用例,也可以使用 Eclipse 的 Junit5 运行器来执行单个测试用例。 5. 运行 Pitest,可以使用 Maven 命令 `mvn org.pitest:pitest-maven:mutationCoverage` 来运行 Pitest。Pitest 会自动生成变异体并运行测试用例,最后生成一个变异测试报告。 以上就是使用 Eclipse+Maven+Junit5+Pitest 进行参数化测试的步骤。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷隐凡二

相识便是缘,开启技术大门

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值