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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java final keyword

    java final keyword

    2021年12月7日
    42
  • 网络传真机——让传真,超越纸的限制[通俗易懂]

    网络传真机——让传真,超越纸的限制[通俗易懂]网络传真机,离你不再遥远!网络传真-真实号码版,超低价来袭,江苏电信倾力投资,立足江苏,面向全国!13万靓号任君选择。 (1)传真发送功能 点击写传真可进行单个号码发送传真也可多个号码…

    2022年6月28日
    30
  • Python二级考试知识点(史上最全)

    Python二级考试知识点(史上最全)Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from库import函数、from库impor*、import库as别名考点1.2基本输入输出函数:input()、eval()、print()考点1.3源程序的书写风格-Python之禅运行importthis即可出现考点1.4Pytho

    2022年5月20日
    121
  • 吊炸天!74款APP完整源码!

    吊炸天!74款APP完整源码!吊炸天!74款APP完整源码!超级干货大集合!下面是所有APP的效果图展示,由于图片较多,加载较慢,为了方便阅读,您也可以点击阅读原文观看。WeChat高仿微信高仿微信,实现功能有:好友之间文字聊天,表情,视频通话,语音,语音电话,发送文件等。知乎专栏App第三方的app,引用作者的描述:“最近一直在利用空余时间开发一个完整的App,名字就叫“专栏”。开发这个App的…

    2022年4月26日
    42
  • menuconfig过程详解

    menuconfig过程详解makefilemenuconfig过程讲解当我们在执行makemenuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linux内核根目录下的scripts文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linux内核根目录下的makefile文件、各层目录下的make

    2022年5月29日
    132
  • DLL文件反编译(附:工具下载链接)

    DLL文件反编译(附:工具下载链接)前几天写程序的时候电脑突然坏了,代码没有提交,已经更新过了,也就是说写的东西,除了DLL文件之外没别的东西了,代码全都没了,突然灵光一闪,想到了反编译。说干就干。百度上搜了下反编译工具,发现一款名叫“Reflector”的歪果反编译文件的效果不错,接下来,下载,为了方便大家,我直接放在百度云里面了:链接:https://pan.baidu.com/s/1PfxKxKp57pTYnSR3ThlOIg提取码:ohx2复制这段内容后打开百度网盘手机App,操作更方便哦下载下来之后,解压完是这样的:

    2025年7月4日
    18

发表回复

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

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