首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JUnitParams参数化单元测试使用详解[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-07-05 13:49:56
发布2022-07-05 13:49:56
41000
代码可运行
举报
运行总次数:0
代码可运行

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

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

1.实战:

1.1 maven依赖:

代码语言:javascript
代码运行次数:0
运行
复制
    <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

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * 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

代码语言:javascript
代码运行次数:0
运行
复制
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.cn/149566.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.实战:
    • 1.1 maven依赖:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档