junit参数化测试的使用方法

时间:2022-08-30 16:02:30

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. 计算某天的下一天:黑盒测试之等价类划分&plus;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之参数化测试、套件&sol;成组测试的使用

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

  8. 测试 &vert; 单元测试工具 &vert; JUnit &vert; 参数化

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

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

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

随机推荐

  1. 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

    原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...

  2. IBatisNet基础组件

    DomSqlMapBuilder DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例.可以通过这个组件从Stream, Uri, FileInfo, or XmlDocumen ...

  3. POJ C程序设计进阶 编程题#1:寻找下标

    编程题#1:寻找下标 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 已知一 ...

  4. R语言屏幕输出

    cat("the total number is:",3+5,"\n") print(x, ...) ?print?cat?format ?write

  5. NavieBayes中的多项式与伯努力模型

    1文本分类过程 例如文档:Good good study Day day up可以用一个文本特征向量来表示,x=(Good, good, study, Day, day , up).在文本分类中,假设 ...

  6. SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-006-Pizza例子的支付流程

    一. 1. 2.payment-flow.xml <?xml version="1.0" encoding="UTF-8"?> <flow x ...

  7. highcharts dynamic change line color

    mouseOut: function(){ this.series.graph.attr({"stroke","#ccc"}) }

  8. jquery和highcharts折线图、柱形图、饼状图-模拟后台传參源代码

    js代码: <script type="text/javascript"> $(function(){ showLine(); showColumn(); showPi ...

  9. JQUERY写大图轮播;附jquery的hover&lpar;&rpar;方法、animate&lpar;&rpar;方法、find&lpar;&rpar;方法

    思想:黑框设置超出部分隐藏. 红框往左移动,通过判断红框左边框距离黑框左边框的像素值,来实现红框的移动. 绿框在最上层,放每张图片的说明和序号. 一:html部分(大框.图片部分.箭头部分.图片介绍部 ...

  10. C&plus;&plus; fstream 详解

    最近在写哈夫曼压缩,遇到了一个比较让人头疼的问题,那就是对文件的读写操作,尤其是以二进制的形式来读写,无奈C++Primer第五版上写的并不详细,很多让人困惑的地方没有涉及或者没有讲清楚.于是这几天我 ...