JUnitParams参数化单元测试使用详解[通俗易懂]

JUnitParams参数化单元测试使用详解[通俗易懂]JUnitParams(github地址:https://github.com/Pragmatists/JUnitParams)作为一个开源的单元测试框架,提供了参数化测试,Coder不需要通过构造器来设置参数,JUnitParams可以由测试方法提供参数,减少了代码量。接下来咱们就一探究竟。

大家好,又见面了,我是你们的朋友全栈君。

    JUnitParams(github地址:https://github.com/Pragmatists/JUnitParams)作为一个开源的单元测试框架,提供了参数化测试,Coder不需要通过构造器来设置参数,JUnitParams可以由测试方法提供参数,减少了代码量。接下来咱们就一探究竟。

      1.实战:

       1.1 maven依赖:           

    <dependencies>
    <dependency>
        <groupId>pl.pragmatists</groupId>
        <artifactId>JUnitParams</artifactId>
        <version>1.0.5</version>
        <scope>test</scope>
    </dependency>
    </dependencies>

      注释:不使用maven的用户可以在maven仓库中下载jar包

         1.2 Student.java

           

/**
 * Created by zhangzh on 2017/2/20.
 */
public class Student {

    private String name;

    private String studentNo;

    private int age;

    private String schoolName;

    public Student(int age) {
        this.age = age;
    }

    public boolean isHighStudent() {
        return age >= 15 && age < 25;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStudentNo() {
        return studentNo;
    }

    public void setStudentNo(String studentNo) {
        this.studentNo = studentNo;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", studentNo='" + studentNo + '\'' +
                ", age=" + age +
                ", schoolName='" + schoolName + '\'' +
                '}';
    }
}

         1.3 测试类:JUnitParamsTest.java

     

import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Created by zhangzh on 2017/2/23.
 */
@RunWith(JUnitParamsRunner.class)
public class JUnitParamsTest {

    @Test
    @Parameters({
            "3, false",
            "20, true",
            "29, false"})
    public void testHighStudent(int age, boolean valid) {

        System.out.println("age=" + age +",valid=" + valid);

        Assert.assertEquals(new Student(age).isHighStudent(), valid);

    }

    @Test
    @Parameters(method = "ageValues")
    public void studentIsHighStudent(int age, boolean valid) throws Exception {

        System.out.println("age=" + age +",valid=" + valid);

        Assert.assertEquals(new Student(age).isHighStudent(), valid);
    }

    private Object[] ageValues() {
        return new Object[]{
                new Object[]{13, false},
                new Object[]{17, true},
                new Object[]{35, false}
        };
    }


    /**
     * 默认约定,当不指定@Parameters中的method方法时,JUnitParams默认查找“parametersFor + 自己做注解的方法名称”作为@Parameters的参数方法
     *      例如,@Parameters注解方法为:personIsAdult_2,则其默认关联的方法名称为:parametersForPersonIsAdult_2
      */




    @Test
    @Parameters
    public void studentIsHighStudent_2(int age, boolean valid) throws Exception {
        System.out.println("age=" + age +",valid=" + valid);

        Assert.assertEquals(new Student(age).isHighStudent(), valid);
    }

    private Object[] parametersForStudentIsHighStudent_2() {
        return new Object[]{
                new Object[]{13, false},
                new Object[]{17, true},
                new Object[]{36, false}
        };
    }


    /**
     *  变量传入对象
     */
    @Test
    @Parameters
    public void studentIsHighStudent_3(Student student, boolean valid) throws Exception {
        System.out.println("age=" + student.getAge() +",valid=" + valid);
        Assert.assertEquals(student.isHighStudent(), valid);
    }

    private Object[] parametersForStudentIsHighStudent_3() {
        return new Object[]{
                new Object[]{new Student(13), false},
                new Object[]{new Student(17), true},
                new Object[]{new Student(45), false}
        };
    }


}

 看,简单吧!

      参考资料:1.JunitParams的github地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149566.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析

    深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析在深度学习模型训练过程中,在服务器端或者本地pc端,输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然后采用top来查看CPU的线程数(PID数)和利用率(%CPU)。往往会发现很多问题,比如,GPU内存占用率低,显卡利用率低,CPU百分比低等等。接下来仔细分析这些问题和处理办法。1.GPU内存占用率问…

    2022年6月12日
    217
  • mpc hc设置_mpc是指什么

    mpc hc设置_mpc是指什么MPC-HC播放器设置启动 MPC-HC ,先设置语言:(最新版本会自动选择对应的系统语言)View-Language-Chinese=>界面变为中文进 视图-选项:播放器:建议勾选「保存设置至.ini文件中」格式:建议勾选全部视频类格式,其中 QuickTime 建议采用「DirectShow」滤镜(双击右侧,在下拉框中即可选择),播放性能会

    2025年11月14日
    3
  • Silverlight 引路蜂二维图形库示例:虚线类型

    Silverlight 引路蜂二维图形库示例:虚线类型

    2021年8月18日
    49
  • python pkl文件_Python字符串格式化输出的方式包括

    python pkl文件_Python字符串格式化输出的方式包括1.pkl文件pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西(二进制文件)。常用于保存神经网络训练的模型或者各种需要存储的数据。保存神经网络训练模型举例(使用pytorch进行保存)保存整个网络:torch.save(net,‘net.pkl’)保存网络的状态信息:torch.save(net.state_dict(),‘net_params.pkl’)提取神经网络的方法:torch.load(‘net.pkl’)存储数据举例importpan

    2025年10月15日
    4
  • python – 获取时间戳(10位和13位)「建议收藏」

    python – 获取时间戳(10位和13位)「建议收藏」在python开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。在python里,在网上介绍的很多方法,得到的时间戳是10位。而java里默认是13位(milliseconds,毫秒级的)。下面介绍python获得时间戳的方法:1、10时间戳获取方法:>>>importtime>>>t=time.time()>>>printt

    2022年10月2日
    4
  • Linux traceroute 命令详解

    Linux traceroute 命令详解traceroute命令Linux中traceroute命令用于显示数据包到目的主机的路径Windows中路由追踪命令是tracert。traceroute指令可以追踪你发送的数据包在网络中传输的路由途径,主要显示走了什么路,到了什么站。其预设的数据包大小是40bytes,该值可以另设。语法:traceroute【参数】【主机】举个简单例子:traceroute-dww…

    2025年8月11日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号