用JUnit4进行参数化测试
来源:互联网 发布:画图软件手机版 编辑:程序博客网 时间:2024/05/29 17:01
原文地址:http://blog.csdn.net/nlznlz/article/details/39431887
参数化测试是一个JUnit 3不具备的功能。
基本使用方法
@RunWith
当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner)来运行测试,而不是JUnit默认的运行器。
要进行参数化测试,需要在类上面指定如下的运行器:
@RunWith (Parameterized.class)
然后,在提供数据的方法上加上一个@Parameters注解,这个方法必须是静态static的,并且返回一个集合Collection。
在测试类的构造方法中为各个参数赋值,(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
文档中的例子
Class Parameterized的文档中有一个例子:
For example, to test a Fibonacci function, write:
@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)); } }
参数化测试实例
还是以前面的Calculator类作为例子,进行参数化测试:
Calculator
package com.mengdd.junit4;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; }}
参数化测试加法的类:
package com.mengdd.junit4;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)); }}
0 0
- 用JUnit4进行参数化测试
- Junit4进行参数化测试
- JUnit4参数化测试
- JUnit4参数化测试
- Junit4参数化测试
- junit4中的参数化测试
- JUnit4中参数化测试
- junit4做参数化测试
- selenium+junit4 参数化测试
- 四、Junit4 参数化测试
- [java]junit4的参数化测试
- 转载:JUnit4的参数化测试和打包测试
- Spring+Junit4进行接口测试
- Spring+Junit4进行接口测试
- SpringTest+Junit4框架进行测试
- Junit4参数化测试实现程序与用例数据分离
- Junit4 参数化测试 判断三角形的例子
- Junit4参数化设置以及测试套件使用
- 网页图片体积优化方法
- c++中system()函数的用处
- sgu180
- 黑马程序员--多线程(Java)
- java中PriorityQueue优先级队列使用方法
- 用JUnit4进行参数化测试
- 导出CSV文件
- Java学习笔记30
- opencv 保存图片操作:sprintf连续保存文件命名的使用
- 题目1002:Grading
- Windows下openssl1.0.0的安装步骤
- Hdu 5147 Sequence II(树状数字 or 线段树 + 输入外挂 前缀和+后缀和)
- Python在windows下的安装及初次使用
- linux I/O模型