绪论
Junit是xUnit的一个子集,在c++,paython,java语言中测试框架的名字都不相同
xUnit是一套基于测试驱动开发的测试框架
其中的断言机制:将程序预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性
java所用的测试工具是Junit,Junit不需要去网上下载,在ecliplse中有。
一.安装步骤
1.新建一个工程
2.工程右键,点击Properties
3.点击Java Build Path
4.点击Add Library
5.点击JUnit,然后点击Next
6.点击JUnit4,然后点击Finish
7.点击Apply and Close
二.JUnit的功能
1.管理测试用例。
修改了哪些代码,这些代码的修改会对哪些部分有影响,通过JUnit将这次的修改做个完整测试。这也就JUnit中所谓的TestSuite。
2.定义测试代码。
这也就是JUnit中所谓的TestCase,根据源代码的测试需要定义每个TestCase,并将TestCase添加到相应的TestSuite方便管理。
3.定义测试环境。
在TestCase测试前会先调用“环境”配置,在测试中使用,当然也可以在测试用例中直接定义测试环境。
4.检测测试结果。
对于每种正常、异常情况下的测试,运行结果是什么、结果是否是我们预期的等都需要有个明确的定义,JUnit在这方面提供了强大的功能。
三.测试用例
1.被测试类。
下面以 “求最大子数组之和”的例子,简单的介绍一下单元测试是什么。
package com.maximun;
public class SubArray {
// 求两个数中的最大
public int max(int x, int y) {
if (x > y)
return x;
else
return y;
}
// 最大子数组之和
public int maxSubArr(int[] arr) {
int sum = arr[0]; // 最大值子数组和
int sub_sum = arr[0];// 中间值
for (int i = 1; i < arr.length; i++) {
sub_sum = max(arr[i], sub_sum + arr[i]);
sum = max(sub_sum, sum);
}
return sum;
}
}
2.编写测试类。
以上代码实现了“最大子数组之和”的算法,共有max和maxSubArr两个方法,下面开始测试(重新创建一个新包,取名 test,所有测试都是再这个新包完成,测试类需要继承junit.framework.TestCase类,测试方法命名需要按照public void TestXXXX格式,通过断言来判断结果的正确行)
package com.test;
import com.maximun.SubArray;
import junit.framework.TestCase;
/**
-
@author
-
@单元测试
*/
public class TestSubArray extends TestCase {
//对方法max进行测试
public void testMax(){
int x = 1; //测试数据
int y = 2;
int z = -1;
SubArray sub = new SubArray();
int result1 = sub.max(x, y);
int result2 = sub.max(y,x);
int result3 = sub.max(z, x);
assertTrue(result1 == y);
assertTrue(result2 == y);
assertTrue(result3 == 1);
}//对方法maxSubArr测试
public void testMaxSubArr(){int arr1[] ={1,2,3,-1}; //测试用例 int arr2[] = {1,2,-4,8,4,-4,6,-2,1}; int arr3[] ={-4,-2,-1,-3}; int arr4[] = {-4,2,-4,2,-1}; SubArray sub = new SubArray(); assertTrue(sub.maxSubArr(arr1) == 6); assertTrue(sub.maxSubArr(arr2) == 14); assertTrue(sub.maxSubArr(arr3) == -1); assertTrue(sub.maxSubArr(arr4) == 2);
}
}
3.程序单元测试的方法:
右击 测试类->Run as ->JUnit test运行结果:(Errors:0,Failure:0 说明测试通过,如果出错,Failure是单元测试所期望的错误,说明你的代码结果不满足你的要求,Errors需要你查看系统的配置,检查代码。)
四.预期结果和实际结果的比较
用例编号 用例描述 输入数据 预期输出数据 通过/不通过 评价
1 检测能否实现最大数组求和的基本功能(一般情况) 1,2,3,-1 6 通过 程序实现基本功能
2 最大子数处于数组的中间(一般情况) 1,2,-4,8,4,-4,6,-2,1 14 通过 程序实现基本功能
3 数组元素均为负数,而且第一元素为负数(特殊情况) -4,-2,-1,-3 -1 通过 程序实现特殊情况的求和
4 数组存在最大值相同的多个(>=2)子数组(特殊情况) -4,2,-4,2,-1 2 通过 程序能对多个相同的子数组进行保留
绪论
Junit是xUnit的一个子集,在c++,paython,java语言中测试框架的名字都不相同
xUnit是一套基于测试驱动开发的测试框架
其中的断言机制:将程序预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性
java所用的测试工具是Junit,Junit不需要去网上下载,在ecliplse中有。
一.安装步骤
1.新建一个工程
2.工程右键,点击Properties
3.点击Java Build Path
4.点击Add Library
5.点击JUnit,然后点击Next
6.点击JUnit4,然后点击Finish
7.点击Apply and Close
二.JUnit的功能
1.管理测试用例。
修改了哪些代码,这些代码的修改会对哪些部分有影响,通过JUnit将这次的修改做个完整测试。这也就JUnit中所谓的TestSuite。
2.定义测试代码。
这也就是JUnit中所谓的TestCase,根据源代码的测试需要定义每个TestCase,并将TestCase添加到相应的TestSuite方便管理。
3.定义测试环境。
在TestCase测试前会先调用“环境”配置,在测试中使用,当然也可以在测试用例中直接定义测试环境。
4.检测测试结果。
对于每种正常、异常情况下的测试,运行结果是什么、结果是否是我们预期的等都需要有个明确的定义,JUnit在这方面提供了强大的功能。
三.测试用例
1.被测试类。
下面以 “求最大子数组之和”的例子,简单的介绍一下单元测试是什么。
package com.maximun;
public class SubArray {
// 求两个数中的最大
public int max(int x, int y) {
if (x > y)
return x;
else
return y;
}
// 最大子数组之和
public int maxSubArr(int[] arr) {
int sum = arr[0]; // 最大值子数组和
int sub_sum = arr[0];// 中间值
for (int i = 1; i < arr.length; i++) {
sub_sum = max(arr[i], sub_sum + arr[i]);
sum = max(sub_sum, sum);
}
return sum;
}
}
2.编写测试类。
以上代码实现了“最大子数组之和”的算法,共有max和maxSubArr两个方法,下面开始测试(重新创建一个新包,取名 test,所有测试都是再这个新包完成,测试类需要继承junit.framework.TestCase类,测试方法命名需要按照public void TestXXXX格式,通过断言来判断结果的正确行)
package com.test;
import com.maximun.SubArray;
import junit.framework.TestCase;
/**
-
@author
-
@单元测试
*/
public class TestSubArray extends TestCase {
//对方法max进行测试
public void testMax(){
int x = 1; //测试数据
int y = 2;
int z = -1;
SubArray sub = new SubArray();
int result1 = sub.max(x, y);
int result2 = sub.max(y,x);
int result3 = sub.max(z, x);
assertTrue(result1 == y);
assertTrue(result2 == y);
assertTrue(result3 == 1);
}//对方法maxSubArr测试
public void testMaxSubArr(){int arr1[] ={1,2,3,-1}; //测试用例 int arr2[] = {1,2,-4,8,4,-4,6,-2,1}; int arr3[] ={-4,-2,-1,-3}; int arr4[] = {-4,2,-4,2,-1}; SubArray sub = new SubArray(); assertTrue(sub.maxSubArr(arr1) == 6); assertTrue(sub.maxSubArr(arr2) == 14); assertTrue(sub.maxSubArr(arr3) == -1); assertTrue(sub.maxSubArr(arr4) == 2);
}
}
3.程序单元测试的方法:
右击 测试类->Run as ->JUnit test运行结果:(Errors:0,Failure:0 说明测试通过,如果出错,Failure是单元测试所期望的错误,说明你的代码结果不满足你的要求,Errors需要你查看系统的配置,检查代码。)
四.预期结果和实际结果的比较
用例编号 用例描述 输入数据 预期输出数据 通过/不通过 评价
1 检测能否实现最大数组求和的基本功能(一般情况) 1,2,3,-1 6 通过 程序实现基本功能
2 最大子数处于数组的中间(一般情况) 1,2,-4,8,4,-4,6,-2,1 14 通过 程序实现基本功能
3 数组元素均为负数,而且第一元素为负数(特殊情况) -4,-2,-1,-3 -1 通过 程序实现特殊情况的求和
4 数组存在最大值相同的多个(>=2)子数组(特殊情况) -4,2,-4,2,-1 2 通过 程序能对多个相同的子数组进行保留