学习背景
背景:公司的地图组件,是在各大图商:高德SDK、百度SDK、Google SDK 以及自己开发的 DD SDK 组装起来的一个大的 SDK组件,在测试的 生产代码中可以看到,一个接口方法,会在不同的 图商的map对象中进行测试,所以提供了不同的参数:Map_Type,每个测试用例在执行的时候在各个map类型中都要跑一下看一下兼容性。
之前没接触过这种Junit参数化的代码,现在看一下熟悉。
参数化测试步骤
1、类上加注解 @RunWith(Parameterized.class)
2、固定的静态方法 模版,object里面是传递的参数
@Parameterized.Parameters
public 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、执行测试方法,查看通过用例情况
@Test
public 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.Parameters
public static List<?> data2(){
return Arrays.asList(
new Object[]{1,2,3,4,5}
);
}
int input;
// int expect;
public ExampleUnitTest(int input){
this.input = input;
}
@Test
public void addition_isCorrect() {
int out = 2*input;
Assert.assertEquals(2*this.input,out);
}
}