JUnit参数化测试的五个步骤:
(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
(2)为测试类声明几个变量,分别用于存放期望值和测试所用数据。
(3)为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
(4)为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
(5)编写测试方法,使用定义的变量作为参数进行测试。

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection; import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters; //(1)步骤一:测试类指定特殊的运行器org.junit.runners.Parameterized ,表示该类将不使用Junit内建的运行器运行,而使用参数化运行器运行
@RunWith(Parameterized.class)
public class CalculatorTest {
private Calculator cal; // (2)步骤二:为测试类声明几个变量,分别用于存放期望值和测试所用数据。
private int expected;
private int input1;
private int input2; @Before
public void setUp() {
cal = new Calculator();
} // (3)步骤三:为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
public CalculatorTest(int expected, int input1, int input2)// 构造方法,为各个参数赋值。
{
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
} // (4)步骤四:为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为
// java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
@Parameters
public static Collection<Integer[]> prepareData() {
Integer[][] object = { { 3, 1, 2 }, { -4, -1, -3 }, { 5, 0, 5 } };
return Arrays.asList(object);// 数组转化成集合形式。
} // (5)步骤五:编写测试方法,使用定义的变量作为参数进行测试。
@Test
public void testAdd() {
System.out.println(this.input1+","+this.input2);
assertEquals(this.expected, cal.add(this.input1, this.input2));// 注意是调用的成员变量。
} }
output:
1,2
-1,-3
0,5

http://blog.csdn.net/seven_3306/article/details/8069948

在Junit中,如果想要同时运行多个测试,需要使用两个注解,
@RunWith(Suite.class)和
@Suite.SuiteClasses(),

创建一个空类作为测试套件的入口。
使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。

通过这两个注解分别指定使用Suite运行器来运行测试,以及指定了运行哪些测试类,其中的,@RunWith(Suite.class)中可以继续指定Suite,这样Junit会再去寻找里面的测试类,一直找到能够执行的TestCase并执行之。

将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。
保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数

package com.shengsiyuan.junit;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class,ParametersTest.class})

public class TestAll {//仅仅一个摆设,实际没用。

}

@BeforeClass、@AfterClass在所有的测试方法以及。@Before、@After执行之前执行。仅仅执行一次,相当于全局初始化和全局销毁,而@Before、@After有多少测试方法就执行多少次

@Ignore可以修饰忽略一个已被@Test修饰的测试方法,也可以修饰一个类,那么类下的所有方法都会被忽略。还可带一个可选的默认参数,用于说明原因。

http://blog.sina.com.cn/s/blog_5cd7f5b40100smao.html

junit参数化测试的使用方法的更多相关文章

  1. junit参数化测试

    在前面的junit4初体验中我就说过,junit参数化测试是一只小怪兽,只逼编码痛点,现在我们这里来整理一下. 看过我前面的那篇初体验的就会发现一个问题,我们的测试代码大量的重复了.在这里先贴出原来的 ...

  2. 计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试

    题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...

  3. Junit mockito 测试Controller层方法有Pageable异常

    1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...

  4. Junit参数化测试Spring应用Dubbo接口

    一.创建基础类. package com.tree.autotest; import org.junit.Before;import org.springframework.context.annot ...

  5. Python 中如何实现参数化测试?

    Python 中如何实现参数化测试? 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文 ...

  6. junit 单元测试 - 参数化测试

    junit4.x版本需要引入如下jar包: hamcrest-core-1.3.jar junit-4.12-beta-3.jar 新建一个计算器类,如下: package com.pt; publi ...

  7. JUnit之参数化测试、套件/成组测试的使用

    原文地址http://blog.csdn.net/yqj2065/article/details/39967065 参数化测试 正如数组替代int a0,a1,a2一样,测试加法时assertEqua ...

  8. 测试 | 单元测试工具 | JUnit | 参数化

    被测试类: package project; public class MyCalendar2 { public int getNumberOfDaysInMonth(int year, int mo ...

  9. JUnit中测试异常抛出的方法

    最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...

随机推荐

  1. 纯JavaScript实现HTML5 Canvas六种特效滤镜

    纯JavaScript实现HTML5 Canvas六种特效滤镜  小试牛刀,实现了六款简单常见HTML5 Canvas特效滤镜,并且封装成一个纯 JavaScript可调用的API文件gloomyfi ...

  2. MySql事务无法回滚的原因

    使用MySQL时.假设发现事务无法回滚,但Hibernate.Spring.JDBC等配置又没有明显问题时.不要苦恼,先看看MySQL创建的表有没有问题.即表的类型. InnoDB和MyISAM是在使 ...

  3. Primefaces 中e.offset(...)问题的处理

    问题 在使用Primefaces构建的页面中,原来好好的页面莫名奇异的出现下拉框不能显示数据且点击没有反应的情况.后来通过firefox发现其JS抛出了一个e.offset(...)错误 解决方法 经 ...

  4. Git怎样同一时候删除多个仓下的同一个分支

    每次下载完代码我们都会在本地通过repo start my_local --all建立分支,这样我们下载的代码在每一个仓下都有一个名叫my_local的分支,有些时候我们因为须要还会建立其它分支,当我 ...

  5. 使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)

    最近在使用maven,顺便尝试了下tomcat部署.网上找到了很多资料但是都不是最新的,所以贴上比较新的Tomcat7部署代码和配置,方便以后回顾-->测试OK. 1. 首先是配置Tomcat ...

  6. SPOJ 7001 VLATTICE - Visible Lattice Points(莫比乌斯反演)

    题目链接:http://www.spoj.com/problems/VLATTICE/ 题意:求gcd(a, b, c) = 1    a,b,c <=N 的对数. 思路:我们令函数g(x)为g ...

  7. Eclipse 实现关键字自动补全功能 (转)

    一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的, ...

  8. ThinkPHP第十五天(setField、setInc、setDec、关联模型)

    1.ThinkPHP中的比较特殊连贯操作 如果要更新某个字段可以用setField方法,比如M('user')->where('id=1')->setField('username','T ...

  9. Altium designer 10如何设置标题栏

    一.修改设置 1.执行Design-Document Option,打开文档属性对话框,设置其中title等参数. 2.执行Place-Text String,按TAB键,将Text属性中设置为&qu ...

  10. 图标字体IcoMoon 使用

    IcoMoon 使用官方地址 http://icomoon.io/实际上,它是一种字体,只不过这种字体的字象图标一样,比如windows中自带的MT Extra Webdings Wingdings字 ...