一、实验要求
Install Junit(4.12), Hamcrest(1.3) with Eclipse
Install Eclemma with Eclipse
Write a java program for the triangle problem and test the program with Junit.
Description of triangle problem:
Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.
二、实验过程
1、Junit、Hamcrest、Eclemma的安装
使用了Idea作为IDE,引入了Junit4.8的Jar包。引入方法为:
File->Project Structrure->Libraries->+按钮->选择jar包->确定
对于Hamcrest,Junit4.4及以上已经集成了Hamcrest框架。由于我使用的是4.8版本,无需再安装
对于Eclemma,Idea自带的插件有Idea Code Coverage,不用再安装其他Code Coverage插件
2、判断三角形的代码
我的程序对于等边三角形返回1,对于非等边而等腰的三角形返回2,对于斜三角形返回3,对于不是三角形的返回4
package hdychi;
public class Triangle {
public static int getType(int a,int b,int c){
if(a == b && b == c){
System.out.println(1);
return 1;
}
else{
if(a == b){
if(a + b > c){
System.out.println(2);
return 2;
}
}
else if(b == c){
if(b + c > a){
System.out.println(2);
return 2;
}
}
else if(a == c){
if(a + c > b){
System.out.println(2);
return 2;
}
}
}
if(a + b > c && Math.abs(a - b) < c){
System.out.println(3);
return 3;
}
System.out.println(4);
return 4;
}
}
3、进行测试
我设计的样例包括等边三角形,三个不同两条边相等的等腰三角形
代码如下:
package hdychi;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
public class Test {
@org.junit.Test
public void testNormal(){
int res1 = Triangle.getType(1,1,1);//测试等边三角形
assertEquals(1,res1);
int res2 = Triangle.getType(2,2,1);//测试等腰三角形
assertEquals(2,res2);
res2 = Triangle.getType(1,2,2);//换两条边等腰
assertEquals(2,res2);
res2 = Triangle.getType(2,1,2);//换两条边等腰
assertEquals(2,res2);
int res3 = Triangle.getType(3,4,5);//测试斜边三角形
assertEquals(3,res3);
int res4 = Triangle.getType(2,2,4);//测试不是三角形的
assertEquals(4,res4);
assertThat(res4,equalTo(4));
}
}
4、测试结果
2018-03-22 12-04-04屏幕截图.png 2018-03-22 12-04-29屏幕截图.png由图可见,测试覆盖率为97%,每个分支都达到了,且无错误
网友评论