基本步骤:
假设待测试类是:
1.在相对应的test文件夹下新建测试类,测试类名是在待测类名前加Test
测试如果需要系统加载JNI库:
在测试类中的第一句:
static{
System.loadLibrary("不带拓展名的库名");
}
这里还有个load函数,此处不多讲,感兴趣可以Google。
推荐使用的是带参数测试,说在类申明前加@RunWith(value=Parameterized.class)表示带参数测试。
关于参数的确定:
在测试类中创建一个static的内部类包含所有的参数,并实现初始化。
关于参数的确定,无非就是出入参和一些状态变量。这里入参是一个数组,出参是int型的最值,一起三个参数。
public class MyClass1Param {
public int[] m_arr;
public int m_min;
public int m_max;
public MyClass1Param(int[] arr,int min,int max)
{
this.m_arr = arr;
this.m_min = min;
this.m_max = max;
}
}
测试类中私有一个这样的参数作为成员:private MyClass1Param m_param = null;
至于这个参数从哪里来?
来自于我们要设置的参数arraylist中一项,测试类会根据arraylist中对象的数目n进行n次调用,每一次调用其中的一项初始化测试类,一个@Before + @Test + @After的流程。
2.定义参数组
为1中要使用的n个参数进行定义,它们在@Parameters中定义,在静态方法data()中以list方式返回
public static Colletion data(){}.
在data函数中,params的申明如下:
ArrayList<Object[]> params = new ArrayList<Object[]>(),这样的ArrayList中存放的是一个对象数组,当然数组中的元素个数是用户自定的。
添加方法:params.add(new Object[]{param00,param01,....,param0(i-1)});每一个可以添加i个不同类型的对象到这个arraylist中。
最后返回params。
一般要将@Parameters放在所有其他的@注释代码之前。
@Parameters
public static Collection<Object[]> data()
{
ArrayList<Object[]> params = new ArrayList<Object[]>();
int a0[] = new int[]{1,2,3,4,5,6,7};
MyClass1Param param0 = new MyClass1Param(a0,1,7);
params.add(new Object[]{param0});
int a1[] = new int[]{-1,-2,-3,-4,-5,-6,-7};
MyClass1Param param1 = new MyClass1Param(a1,-7,-1);
params.add(new Object[]{param1});
int a2[] = new int[]{-3,-2,-1,0,1,2,3};
MyClass1Param param2 = new MyClass1Param(a2,-3,3);
params.add(new Object[]{param2});
return params;
}
3.相应定义其他的@注释开头的代码
虽然测试类中的调用顺序已经由@注释所决定了,但是编写时为了一一对应,一般首先编写顺序:
@BeforeClass
@AfterClass
@Before 通过参数初始化测试类中成员的好时机
@After 释放掉测试类中的成员
@Test 测试代码
综合的代码如下:
假设待测试类是:
{CSDN:CODE:347630}
1.在相对应的test文件夹下新建测试类,测试类名是在待测类名前加Test
测试如果需要系统加载JNI库:
在测试类中的第一句:
static{
System.loadLibrary("不带拓展名的库名");
}
这里还有个load函数,此处不多讲,感兴趣可以Google。
推荐使用的是带参数测试,说在类申明前加@RunWith(value=Parameterized.class)表示带参数测试。
关于参数的确定:
在测试类中创建一个static的内部类包含所有的参数,并实现初始化。
关于参数的确定,无非就是出入参和一些状态变量。这里入参是一个数组,出参是int型的最值,一起三个参数。
public class MyClass1Param {
public int[] m_arr;
public int m_min;
public int m_max;
public MyClass1Param(int[] arr,int min,int max)
{
this.m_arr = arr;
this.m_min = min;
this.m_max = max;
}
}
测试类中私有一个这样的参数作为成员:private MyClass1Param m_param = null;
至于这个参数从哪里来?
来自于我们要设置的参数arraylist中一项,测试类会根据arraylist中对象的数目n进行n次调用,每一次调用其中的一项初始化测试类,一个@Before + @Test + @After的流程。
2.定义参数组
为1中要使用的n个参数进行定义,它们在@Parameters中定义,在静态方法data()中以list方式返回
public static Colletion data(){}.
在data函数中,params的申明如下:
ArrayList<Object[]> params = new ArrayList<Object[]>(),这样的ArrayList中存放的是一个对象数组,当然数组中的元素个数是用户自定的。
添加方法:params.add(new Object[]{param00,param01,....,param0(i-1)});每一个可以添加i个不同类型的对象到这个arraylist中。
最后返回params。
一般要将@Parameters放在所有其他的@注释代码之前。
@Parameters
public static Collection<Object[]> data()
{
ArrayList<Object[]> params = new ArrayList<Object[]>();
int a0[] = new int[]{1,2,3,4,5,6,7};
MyClass1Param param0 = new MyClass1Param(a0,1,7);
params.add(new Object[]{param0});
int a1[] = new int[]{-1,-2,-3,-4,-5,-6,-7};
MyClass1Param param1 = new MyClass1Param(a1,-7,-1);
params.add(new Object[]{param1});
int a2[] = new int[]{-3,-2,-1,0,1,2,3};
MyClass1Param param2 = new MyClass1Param(a2,-3,3);
params.add(new Object[]{param2});
return params;
}
3.相应定义其他的@注释开头的代码
虽然测试类中的调用顺序已经由@注释所决定了,但是编写时为了一一对应,一般首先编写顺序:
@BeforeClass
@AfterClass
@Before 通过参数初始化测试类中成员的好时机
@After 释放掉测试类中的成员
@Test 测试代码
综合的代码如下:
TestMyClass1.java:
{CSDN:CODE:347639}