Junit 参数化测试基础
- 学习背景
- 参数化测试步骤
- 完整代码
学习背景
背景:公司的地图组件,是在各大图商:高德SDK、百度SDK、Google SDK 以及自己开发的 HLL SDK 组装起来的一个大的 SDK组件,在测试的 生产代码中可以看到,一个接口方法,会在不同的 图商的map对象中进行测试,所以提供了不同的参数:Map_Type,每个测试用例在执行的时候在各个map类型中都要跑一下看一下兼容性。
之前没接触过这种Junit参数化的代码,现在看一下熟悉。
参数化测试步骤
1、类上加注解 @RunWith(Parameterized.class)
2、固定的静态方法 模版,object里面是传递的参数
@Parameterized.Parameterspublic static List<?> data2(){return Arrays.asList(new Object[]{1,2,3,4,5});}
3、在类内部定义几个变量,方便在构造函数里面接受参数
int input;
// int expect;public ExampleUnitTest(int input){this.input = input;}
4、执行测试方法,查看通过用例情况
@Testpublic void addition_isCorrect() {int out = 2*input;Assert.assertEquals(2*this.input,out);}
完整代码
package com.ttit.map;import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;import static org.junit.Assert.*;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;/*** Example local unit test, which will execute on the development machine (host).** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
@RunWith(Parameterized.class)
public class ExampleUnitTest {// @Parameterized.Parameters
// public static List<?> data(){
// return Arrays.asList(new Object[][]{
// {1,2},{2,4},{4,5}
// });
// }@Parameterized.Parameterspublic static List<?> data2(){return Arrays.asList(new Object[]{1,2,3,4,5});}int input;
// int expect;public ExampleUnitTest(int input){this.input = input;}@Testpublic void addition_isCorrect() {int out = 2*input;Assert.assertEquals(2*this.input,out);}
}