测试用例
(含有“()”号的为错误预言)
序号 |
测试输入(三条边:a,b,c) |
测试预言 (Oracle:Illegal,Regular,Scalene,Isoceles) |
4 | (0.6.5) | Illegal |
5 | (4,2,3) | Scalence |
6 | (4,4,4) | Regular |
7 | (-2,-2,-2) | Illegal |
8 | (3,3,5) | Isoceles |
9 | (-2,-2,-2) | (Regular) |
10 | (3,3,6) | (Isoceles) |
11 | (1,2,3) | (Scalene) |
根据预测用例表,写出如下的测试函数:
@Test
public void testlsTringle4(){
Triangle t=new Triangle(0,6,5);
assertEquals(t.getType(t),"Illegal");
}
@Test
public void testlsTringle5(){
Triangle t=new Triangle(4,3,2);
assertEquals(t.getType(t),"Scalene");
}
@Test
public void testlsTringle6(){
Triangle t=new Triangle(4,4,4);
assertEquals(t.getType(t),"Regular");
}
@Test
public void testlsTringle7(){
Triangle t=new Triangle(-2,-2,-2);
assertEquals(t.getType(t),"Illegal");
}
@Test
public void testlsTringle8(){
Triangle t=new Triangle(3,3,5);
assertEquals(t.getType(t),"Isoceles");
}
@Test
public void testlsTringle9(){
Triangle t=new Triangle(-2,-2,-2);
assertEquals(t.getType(t),"Regular");
}
@Test
public void testlsTringle10(){
Triangle t=new Triangle(3,3,6);
assertEquals(t.getType(t),"Isoceles");
}
@Test
public void testlsTringle11(){
Triangle t=new Triangle(1,2,3);
assertEquals(t.getType(t),"Scalene");
}
运行测试类,得到测试结果为:
结果显示(由于函数名和测试用例表一一对应),4-8运行通过,结果达到预期,9-11结果与预期不符。跟我的预期设想一致。
体会:
设计测试用例时,根据等价划分,何以分为四类:即非法三角形,一般三角形,等腰三角形,等边三角形。而我增加9-11用例是为了测试特殊输入数据,比如(3,3,6)。若输出为等腰,说明没有进行合法性判断,在测试函数中进行assertEquals(t.getType(t),"Isoceles")产生错误。
在Eclipse2014版本中,我用的是它的JUnit4,测试方法选中isTriangle(long,long,long)和getType(Triangle)。在测试方法前注明@Teat,表明是测试,而且测试函数必须是Void类型的,且不含任何参数。
在这次测试中,我使用的是测试类的assertEquals方法(import static org.junit.Assert.*),用来判断实际结果和预期是否一致。