参数化测试是一个JUnit 3不具备的功能。
基本使用方法:
一.@RunWith
当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner)来运行测试,而不是JUnit默认的运行器。
文档中的例子
Class Parameterized的文档中有一个Fibonacci(斐波那契)的例子:
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。
For example, to test a Fibonacci function, write:
FibonacciTest.java
package com.bijian.study; 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 FibonacciTest { @Parameters public static Collection data() { return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); } private int fInput; private int fExpected; public FibonacciTest(int input, int expected) { fInput = input; fExpected = expected; } @Test public void test() { assertEquals(fExpected, Fibonacci.compute(fInput)); } }
Fibonacci.java
package com.bijian.study; public class Fibonacci { public static int compute(int n) { if (n < 0) { return -1; } if (n == 0 || n == 1) { return n; } return compute(n - 2) + compute(n - 1); } }
单元测试结果:
二.@RunWith (Parameterized.class)
要进行参数化测试,需要在类上面指定如下的运行器:
@RunWith (Parameterized.class)
然后,在提供数据的方法上加上一个@Parameters注解,这个方法必须是静态static的,并且返回一个集合Collection。
在测试类的构造方法中为各个参数赋值,(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
参数化测试实例:还以Calculator类作为例子
Calculator.java
package com.bijian.study; public class Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) throws Exception { if (0 == b) { throw new Exception("除数不能为0"); } return a / b; } }
参数化测试加法的类:ParametersTest.java
package com.bijian.study; import java.util.Arrays; import java.util.Collection; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) // 指定运行器runner:使用参数化运行器来运行 public class ParametersTest { private int expected;// 期待的结果值 private int input1;// 参数1 private int input2;// 参数2 private Calculator calculator = null; @Parameters public static Collection prepareData() { // 测试数据 Object[][] objects = { { 3, 1, 2 }, { -4, -1, -3 }, { 5, 2, 3 }, { 4, -4, 8 } }; return Arrays.asList(objects);// 将数组转换成集合返回 } @Before public void setUp() { calculator = new Calculator(); } public ParametersTest(int expected, int input1, int input2) { // 构造方法 // JUnit会使用准备的测试数据传给构造函数 this.expected = expected; this.input1 = input1; this.input2 = input2; } @Test public void testAdd() { Assert.assertEquals(this.expected, calculator.add(this.input1, this.input2)); } }
单元测试结果:
文章来源:http://www.cnblogs.com/mengdd/archive/2013/04/13/3019336.html
相关推荐
Junit参数化测试的使用方法博客 的源代码
junit参数化测试的使用方法,数据驱动:数组,excel
JUnit是Java编程语言的单元测试框架,用于编写和可重复运行的自动化测试。JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有(下列注解标示了单元测试的不同运行阶段执行的代码): @BeforeClass 全局只会...
本次博客更新的是,上次使用eclise+JUint测试完,想用idea进行测试,同时maven项目已经学习过了,想学习新的知识为前提。 知识储备, Gradle是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建...
Feed4JUnit能够让编写JUnit的参数化测试变得简便,并为这些测试提供预定义或随机测试数据。它能够从业务分析人员定义好的CVS或 Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功。利用Feed4JUnit能够...
启动后,自动化测试,并判断执行结果, 不需要人为的干预。 只需要查看最后结果,就知道整个项目的方法接口是否通畅。 每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。 添加,删除,...
Junit4之后只要在每个测试方法标注@Test注解即可,方法名可以任意取。 ★ 断言(assertion):是测试框架里面的若干个方法,用来判断某个语句的结果是否为真或判断是否与预期相符。 比如assertTrue()和assertEquals()...
junit4单元测试使用步骤 参数化单元测试示例 spring集成junit4示例
JUnit参数化测试参数化测试是使用不同的值一次又一次地执行相同的测试。 它可以帮助开发人员节省执行相同测试的时间,该测试仅在输入内容和预期结果上有所不同。 ->乘法示例;)
lambdatarunner 使用Lambdas参数化测试的Junit跑步者在JUnit中创建参数化测试的一个问题是,这样做的方法既倾向于将数据与代码分离,又缺乏类型安全性,因为没有编译时检查所提供的数据是否与测试期望的数据匹配。...
本文档中源码为软件测试课程实验相关内容,压缩包内也有详细需求说明。大致功能为测试一个输入为税前工资输出为税后工资的方法的单元测试,通过设计测试用例实现等价类划分测试,边界值分析测试以及路径覆盖测试
1.Junit4 配置 2.Junit4 生成单元测试 3.Junit4 语法讲解 4.Junit4 参数化 5.Junit4 打包集成测试 6.Junit4 高级应用
JUnit工具箱提供了一些有用的类,用于使用JUnit编写自动化测试: 用于使用多个并发运行的线程编写压力测试的Helper类 帮助器类等待异步操作 使用多个工作线程同时执行所有@Test方法以及使用不同参数分配对@Theory...
本文来自于cnblogs,本文主要介绍了没有junit工具下如何测试...是一套基于java的测试框架,目前有两个版本:Junit3,Junit4.Junit中最常用的两个测试方法是:assertEquals(expect,actual);用于非数组型的数据的比较;
用JUnit进行单元测试使用JUnit测试一组方法(最大和总和)要求完整的NumberUtil.java 使用流实现max和sum方法。 在这些方法中,如果列表为空,则引发异常。... 考虑使用参数化测试。 (这不是必需的。)JUnit结果
将参数的输入、请求执行、结果解析、数据验证、数据准备与清理各个环节都做了封装,以数据文本文件为接口,降低自动化测试过程中case书写的难度。数据驱动测试执行是该框架的主要特征,都体现在case“文件”中: 1. ...
(2)基于Junit5完成单元测试(至少基本测试与参数化测试) 2. 以下为JDK中ArrayList的remove()方法,请应用白盒测试方法设计测试用例,并应用JUnit5完成测试。要求:(1)完成分别满足语句覆盖、判定覆盖、条件...
CSCI4830-homework-0304:junit参数化和csv测试