JUnit4参数化测试实例
注意:
在Eclipse中因为版本问题,可能无法使用@parameters(name = "xxx"),详见解决办法(文章的最后部分: IDE Bug - Eclipse):
https://github.com/junit-team/junit/wiki/Parameterized-tests


1. MathUtils – 参数化测试
查看一个简单的 add 方法。
MathUtils.java
package com.yiibai.match.utils;
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
}
这里有一个为上面的JUnit测试类,阅读不言自明的注释。
MathUtilsTest.java
package com.yiibai.match.utils; import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; @RunWith(value = Parameterized.class)
public class MathUtilsTest { private int numberA;
private int numberB;
private int expected; //parameters pass via this constructor
public MathUtilsTest(int numberA, int numberB, int expected) {
this.numberA = numberA;
this.numberB = numberB;
this.expected = expected;
} //Declares parameters here
@Parameters(name = "{index}: add({0}+{1})={2}")
public static Iterable<Object[]> data1() {
return Arrays.asList(new Object[][] {
{ 1, 1, 2 },
{ 2, 2, 4 },
{ 8, 2, 10 },
{ 4, 5, 9 }
});
} @Test
public void test_add() {
assertEquals(expected,MathUtils.add(numberA, numberB));
} }
什么是 {0}, {1} 和 {2}?
如果参数是 “{ 3, 4, 7 }”, 那么 {0} = 3, {1} = 4, {2} = 7. 请参考以下的输出:


2. DomainUtils – 参数化测试
查看域名验证程序。
DomainUtils.java
package com.yiibai.regex.utils;
import java.util.regex.Pattern;
public class DomainUtils {
private static Pattern pDomainName;
private static final String DOMAIN_NAME_PATTERN = "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$";
static {
pDomainName = Pattern.compile(DOMAIN_NAME_PATTERN);
}
//is this a valid domain name?
public static boolean isValidDomainName(String domainName) {
return pDomainName.matcher(domainName).find();
}
}
这里有一个 JUnit 测试上面的类。
DomainUtilsTest.java
package com.yiibai.regex.utils; import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; @RunWith(value = Parameterized.class)
public class DomainUtilsTest { private String domain;
private boolean expected; public DomainUtilsTest(String domain, boolean expected) {
this.domain = domain;
this.expected = expected;
} @Parameters(name= "{index}: isValid({0})={1}")
public static Iterable<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "google.com", true },
{ "yiibai.com", true },
{ "-yiibai.com", false },
{ "yiibai-.com", false },
{ "3423kjk", false },
{ "mk#$kdo.com", false }
}
);
} @Test
public void test_validDomains() {
assertEquals(expected,DomainUtils.isValidDomainName(domain));
} }
输出结果:


完成
JUnit4参数化测试实例的更多相关文章
- JMeter学习-026-JMeter 分布式(远程)参数化测试实例
以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...
- Junit4参数化测试实现程序与用例数据分离
http://touchfu.iteye.com/blog/732930 现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作 ...
- 用JUnit4进行参数化测试
参数化测试是一个JUnit 3不具备的功能. 基本使用方法 @RunWith 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner) ...
- 同时使用Junit4的@Parameterized参数化测试和Spring容器
转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...
- Junit4进行参数化测试
@RunWith, 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner)来运行测试,而不是JUnit默认的运行器. 要进行参数化测 ...
- Google C++单元测试框架GoogleTest---值参数化测试
值参数化测试允许您使用不同的参数测试代码,而无需编写同一测试的多个副本. 假设您为代码编写测试,然后意识到您的代码受到布尔参数的影响. TEST(MyCodeTest, TestFoo) { // A ...
- junit 单元测试 - 参数化测试
junit4.x版本需要引入如下jar包: hamcrest-core-1.3.jar junit-4.12-beta-3.jar 新建一个计算器类,如下: package com.pt; publi ...
- Jmeter 参数化请求实例
Jmeter 参数化请求实例 在jmeter中的请求可以参数化,其中参数化的方式有4种: 1.CSV Data Set Config 2.数据库 3.用户自定义变量 4.用jmeter中的函数获取参数 ...
- junit参数化测试
在前面的junit4初体验中我就说过,junit参数化测试是一只小怪兽,只逼编码痛点,现在我们这里来整理一下. 看过我前面的那篇初体验的就会发现一个问题,我们的测试代码大量的重复了.在这里先贴出原来的 ...
随机推荐
- scala future
https://docs.scala-lang.org/overviews/core/futures.html https://docs.scala-lang.org/overviews/index. ...
- How to Auto Execute Commands/Scripts During Reboot or Startup.
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/installation_guide/s1- ...
- Pythonic版冒泡排序和快速排序(附:直接插入排序)
[本文出自天外归云的博客园] 冒泡排序:就是每次排序选最大元素到数组a的最后,排 len(a)-1 次.也就是两个for循环: 1. 外层是待排数组长度的循环,从待排数组长度(初始待排数组长度等于数组 ...
- 把Java中\u格式的unicode编码转成中文
使用org.apache.commons.lang.StringEscapeUtils#unescapeJava(String)方法. 当然用org.apache.commons.lang.Strin ...
- docker简易命令
docker应用 安装 sudo yum install docker 启动 docker 进程 $ sudo service docker start Docker 默认开机启动 $ sudo ch ...
- python-标识符(Identifiers)和关键字(keywords)
标识符:Identifiers 标识符必须以字母(大小写均可)或者"_"开头,接下来可以重复0到多次(字母|数字|"_") 特点: 1.没有长度限制 2.区分大 ...
- [转]MySQL函数大全 及用法示例
原文地址:http://blog.sina.com.cn/s/blog_4586764e0100h5ct.html 1.字符串函数ascii(str) 返回字符串str的第一个字符的ascii值( ...
- [转]Mustache 使用心得总结
原文地址:https://blog.csdn.net/xuemoyao/article/details/17896203 前言: 之前的一个项目里面就有用到这个前台的渲染模版,当时挺忙的也没时间抽空总 ...
- python学习笔记十四:wxPython Demo
一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets ...
- PHPUnit 手册(转)
PHPUnit 手册 PHPUnit 手册 Sebastian Bergmann 版权 © 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, ...