一,背景,

有时候会对相同的代码结构做同样的操作,不同的时对参数的设置数据和预期结果;有没有好的办法提取出来相同的代码,提高代码的可重用度,junit4中使用参数化设置,来处理此种场景;

二,代码展示,

1,右键test/com.duo.util新建->junit Test Case

2,修改测试运行器(@RunWith(Parameterized.class))

 package com.duo.util;

 import static org.junit.Assert.*;

 import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; @RunWith(Parameterized.class)
public class ParameterTest { }

3,声明变量存储测试数据和预期值

4,测试多组数据,就需要声明一个数组存放结果数据;为测试类声明返回值为Collection公共静态方法;

 package com.duo.util;

 import static org.junit.Assert.*;

 import java.util.Arrays;
import java.util.Collection; import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class)
public class ParameterTest {
int expected = 0;
int input1 = 0;
int input2 = 0; @Parameters
public static Collection<Object[]> t(){
return Arrays.asList(new Object[][]{{3,1,2},{4,2,2}});
} public ParameterTest(int expected, int input1, int input2){
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
} @Test
public void testAdd(){
assertEquals(expected, new Calculate().add(input1, input2));
} }

三,总结

1,更改默认的测试运行器为RunWith(Parameterized.class)

2,声明变量存储预期值和测试数据

3,声明一个返回值为Collection公共静态方法,并使用@Parameters进行修饰

4,为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值

Junit4学习(六)Junit4参数化设置的更多相关文章

  1. Junit4学习使用和总结

    Junit4学习使用和总结 部分资料来源于网络 编辑于:20190710 一.Junit注解理解 1.@RunWith 首先要分清几个概念:测试方法.测试类.测试集.测试运行器.其中测试方法就是用@T ...

  2. 【Loadrunner】初学Loadrunner——参数化设置(Table类型关联数据库)

    参数化输入是Loadrrunner里面一个强大的功能,属于Loadrunner的高级使用技巧. 我们在登录系统的时候,需要输入一组定义的用户名和密码,比如有5个虚拟用户同时登陆系统,则这五个用户都用这 ...

  3. SVG 学习<六> SVG的transform

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  4. IDEA里运行程序时出现Error:scalac:error while loading JUnit4 , Scala signature JUnit4 has wrong version错误的解决办法(图文详解)

    不多说,直接上干货! 问题详情 当我们在运行程序时,出现Error:scalac:error while loading JUnit4 , Scala signature JUnit4 has wro ...

  5. C#多线程学习(六) 互斥对象

    如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类. 我们可以把Mutex看作一个出租车,乘客看作线程.乘客首先 ...

  6. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  7. day 84 Vue学习六之axios、vuex、脚手架中组件传值

    Vue学习六之axios.vuex.脚手架中组件传值   本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...

  8. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  9. TweenMax动画库学习(六)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

随机推荐

  1. 流程控制------if else分支语句

    一.If`······else语句:如果条件成立,就执行在语句体... 语法:if    条件:   语句体1   语句体2   语句体3 ··········· 例如: 1. if True:   ...

  2. go环境的安装~

    Golang环境搭建 Golang github地址:https://github.com/golang/go Golang的环境下载:https://golang.org/dl/ 安装过程就是nex ...

  3. 利用Arduino快速制作Teensy BadUSB, 攻击计算机

    BadUsb介绍 BadUSB是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布. 虽然已隔一两年,但还是有 ...

  4. java子类和父类中静态块、非静态块、构造函数的执行顺序

    public class qqqq extends Parent{ public static void main(String[] args) { new Child(); } } class Pa ...

  5. 设计模式(8)--Decorator--装饰器模式--结构型

    1.模式定义: 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 2.模式特点:    装饰模式能够实现动态的为对象添加功能,是从一个对象 ...

  6. 深入认识XmlReader

      深入认识XmlReader 摘要 XmlReader类是组成.NET的关键技术之一,极大地方便了开发人员对Xml的操作.通过本文您将对XmlReader有一个很好的认识,并将其应用到实际开发中. ...

  7. DataTableToList

    很简单的转换功能,这是我在GitHub上复制的一段代码(懒得再去找原地址了),感觉功能还算可以,贴出来分享给大家 /// <summary> /// DataTable to List c ...

  8. Java 环境设置

    Java 环境设置 本地环境设置 如果你依然想要为 Java 编程语言设置环境,那么本节将指导你如何在你的电脑上下载和设置 Java.请按照以下步骤进行环境设置. Java SE 可以从下载 Java ...

  9. 7.31.2 this关键字

    this用在所有方法中:    用来区分局部变量和成员变量的名字二义性! 如:在set方法中这样写:name = name; 则java会遵循"谁近谁优先"的规则,会给局部变量赋值 ...

  10. 『HTMl5』学习日志

    w3g提供在线校验页面:http://validator.w3.org/ 1.文本框获取焦点 <%@ page language="java" import="ja ...