(2016春) 作业8:单元测试练习(个人练习)
单元测试练习
0. 时间要求
- 截止日期:2016-5-17
1. 目的
-
单元测试训练 (Junit框架应用)
-
测试用例的设计方法
2. 要求
- [必做题1] 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例,写到博客中。(10分)
测试用例 | ||
序号 | 测试输入:三条边(a,b,c) | 测试预言(Oracle:直角、等腰、等边三角形) |
1 | 输入(1,1,1) | 等边三角形 |
2 | 输入(****) | *** |
Ps:设计测试用例时,注意不要遗漏、也要避免冗余.
-
[必做题2] 模仿附录2给出的三角形判断Junit测试代码,设计单元测试脚本,测试 [必做题1]设计得到的测试用例。注意测试脚本中测试用例出现顺序与[必做题1]表格所列顺序一致。运行所得的测试脚本,截运行结果图,写到博客中,同时将源代码commit到你自己的github。(20分)
-
[必做题3] 心得体会。写下本次练习你收获的知识点(PS:测试用例设计方法和步骤;测试脚本设计步骤或主要内容)。(10分)
附录
附录1: 三角形类别判断程序
public class Triangle {
// 定义三角形的三边
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// 构造函数
public Triangle(long lborderA, long lborderB, long lborderC) {
this.lborderA = lborderA;
this.lborderB = lborderB;
this.lborderC = lborderC;
}
/**
* 判断是否是三角形
*
* 是返回true;不是返回false
*/
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;
// 判断边界,大于0 小于或等于Long.MAX_VALUE,出界返回false
if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
&& (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
&& (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {
// 判断两边之差小于第三边
if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
&& diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
&& diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
isTriangle = true;
}
}
return isTriangle;
}
/**
* 判断三角形类型
*
* 只有两条边相等的三角形返回字符串“等腰三角形”; 三边均相等的三角形返回字符串“等边三角形”; 三边均不等的三角形返回字符串“不等边三角形”;
*/
public String getType(Triangle triangle) {
String strType = "Illegal";
// 判断是否是三角形
if (isTriangle(triangle)) {
// 判断是否是等边三角形
if (triangle.lborderA == triangle.lborderB
&& triangle.lborderB == triangle.lborderC) {
strType = "Regular";
}
// 判断是否是不等边三角形
else if ((triangle.lborderA != triangle.lborderB)
&& (triangle.lborderB != triangle.lborderC)
&& (triangle.lborderA != triangle.lborderC)) {
strType = "Scalene";
}
// 三角形既非三边全部相等,又非全部不等,只能是部分相等即等腰三角形
else {
strType = "Isoceles";
}
}
return strType;
}
/**
* 计算两边之差的绝对值
*
* */
public long diffOfBorders(long a, long b) {
return (a > b) ? (a - b) : (b - a);
}
/**
* 用于获取三角形的边长
*/
public long[] getBorders() {
long[] borders = new long[3];
borders[0] = this.lborderA;
borders[1] = this.lborderB;
borders[2] = this.lborderC;
return borders;
}
}
附录 2:三角形类别判断的单元测试脚本示例:
import static org.junit.Assert.*;
import org.junit.Test;
public class TestTriangle{
@Test
public void testIsTriangle1(){
Triangle t = new Triangle(-1,10,2);
assertFalse(t.isTriangle(t));
}
@Test
public void testIsTriangle2(){
// according to the mutant, this test case should fail
Triangle t = new Triangle(3,2,1);
assertFalse(t.isTriangle(t));
}
@Test
public void testIsTriangle3(){
Triangle t = new Triangle(3,1,2);
assertFalse(t.isTriangle(t));
}
// 下面是添加你设计的测试用例
// *****
}