Parameterized继承自Suite。Parameterized是在参数上实现了Suite,修饰一个测试类,然后提供多组构造函数的参数用于测试不同场景。

import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runners.Parameterized; @RunWith(Parameterized.class)
public class ParameterizedTest {
@Parameters
public static Collection<Object[]> data(){
return Arrays.asList(new Object[][]{
{0,"Zero"},{1,"One"},{2,"Two"},{3,"Three"},{4,"Four"},{5,"Five"},{6,"Six"}
});
} private int fInput;
private String fExpected; public ParameterizedTest(int input,String expected){
super();
fInput=input;
fExpected=expected;
} @Test
public void test(){
System.out.println(fInput+":"+fExpected);
}
}

测试结果:

0:Zero
1:One
2:Two
3:Three
4:Four
5:Five
6:Six

我们首先需要用@RunWith(Parameterized.class)来修饰我们的测试类;然后建立一个带有参数的构造器,由于每次运行测试方法的时候都会调用构造器,所以会根据相应的参数来创建一个测试实例;最后需要用@Parameters修饰我们提供参数的静态方法,该静态方法需要返回List<Object[]>,List包含的是参数组,Object[]即按顺序提供的一组参数。

另外一种使用参数的方法是通过 @Parameter 直接将数据注入属性。但是该属性必须是public。

import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runners.Parameterized; @RunWith(Parameterized.class)
public class ParameterizedTest02 {
@Parameters
public static Collection<Object[]> data(){
return Arrays.asList(new Object[][]{
{0,"Zero"},{1,"One"},{2,"Two"},{3,"Three"},{4,"Four"},{5,"Five"},{6,"Six"}
});
} @Parameter(value=1)
public String fInput;
@Parameter(value=0)
public int fExpected; @Test
public void test(){
System.out.println(fInput+":"+fExpected);
}
}

测试结果:

Zero:0
One:1
Two:2
Three:3
Four:4
Five:5
Six:6
对于上面的7组测试结果数据,在JUnit中显示为:

我们可以通过为 @Parameters加一个格式化 name 值来为每一组测试提供一个个性化的名字。name值允许包含占位符:

  • {index}:当前参数索引
  • {0},{1},...:第一(二,三等等)个参数值

如果把上面例子的@Parameters 改为 @Parameters(name="{index}:English({0})={1}]") ,则在JUnit中显示为:

Parameterized tests的更多相关文章

  1. JUnit5学习之六:参数化测试(Parameterized Tests)基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. JUnit5学习之七:参数化测试(Parameterized Tests)进阶

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. .NET单元测试的艺术-1.入门

    开篇:最近在看Roy Osherove的<单元测试的艺术>一书,颇有收获.因此,将其记录下来,并分为四个部分分享成文,与各位Share.本篇作为入门,介绍了单元测试的基础知识,例如:如何使 ...

  4. Javascript单元测试框架比较Qunit VS Jasmine

    Javascript单元测试框架比较Qunit VS Jasmine 工欲行其事必先利其器,好的单元测试框架是TDD成功的一半.Javascript优秀的测试框架很多, 包括Jasmine,Qunit ...

  5. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  6. [转]awsome-java

    原文链接 Awesome Java A curated list of awesome Java frameworks, libraries and software. Contents Projec ...

  7. [翻译]NUnit---TearDown and SetUpFixture and Test Attributes(二十)

    TearDownAttribute (NUnit 2.0 / 2.5) 本特性在TestFixture内部使用,每个测试方法执行后调用的方法集.也可以在SetUpFixture中使用,在同一命名空间或 ...

  8. JUnit4.11 理论机制 @Theory 完整解读

    最近在研究JUnit4,大部分基础技术都是通过百度和JUnit的官方wiki学习的,目前最新的发布版本是4.11,结合代码实践,发现官方wiki的内容或多或少没有更新,Theory理论机制章节情况尤为 ...

  9. 聊聊 Python 的单元测试框架(二):nose 和它的继任者 nose2

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

随机推荐

  1. 浮点数精确表示,java陷阱

    /** 浮点数表示问题 @author husky */ public class Change { public static void main(String[] args) { double n ...

  2. [转]iframe自适应宽度高度

    <iframe id="iframe" onLoad="AutoFit();" frameborder="0" scrolling=& ...

  3. gulp Tips

    npm配置相关属性用于寻找全局安装的module npm install  --save-dev 本地安装   在gulp.src()里指定取用文件的语法是,在[ ]中以字符串形式填写文件名,用&qu ...

  4. js字符串倒序

    有的时候我们需要把字符串倒序. 比如“范坚强”的倒序就是“强坚范”. 如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var r ...

  5. PHP 用户注册

    注册页面 reg.html 负责收集用户填写的注册信息.教程里只列出关键的代码片段,完整的代码附在本节最后. 注册表单 <fieldset> <legend>用户注册</ ...

  6. nginx1.8+php5.6.10 服务器编译安装备忘2015-06

    又要重新装一台阿里云服务器.开始想用脚本,但发现脚本的程序版本都比较低  还是手动编译最新版本 开始前 更新服务器到最新版本 #yum makecache #yum update //分区挂数据盘 # ...

  7. 理解CSS Clip属性及用法

    应用Clip属性实现的一个简单效果图: 样式写法: .my-element { position: absolute; clip: rect(10px  350px  170px  0); /* IE ...

  8. VS2010 release 和 debug 调试区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  9. vsftpd.conf 联机手册

    vsftpd.conf - vsftpd 的配置文件 描述vsftpd.conf 可以用于控制 vsftpd, 以实现各种各样的功能. vsftpd 缺省到 /etc/vsftpd.conf 处查找此 ...

  10. PHP Cookie学习

    <?php /* Cookie在计算机中保存的格式 用户名@网站地址[数字].txt Cookie在文件夹下,每个Cookie文件都是一个简单而又普通的文件件而不是程序,Cookie中的内容大多 ...