本次实验是Junit,hamcrest,eclemma单元测试的基础应用,从安装开始。这里选择的语言是java,IDE为Eclipse(MARS.2)
1)安装junit, hamcrest 和 eclemma
1.1 安装juint,hamcrest
这两个的安装我使用了同一种方法,即导入jar包,在“项目”->“属性”当中选择java构建路径,导入外部提前下好的jar包,这里我导入的是junit(4.12)和hamcrest-all-1.3。导入后就可以生成测试实例和进行测试了。
1.2 安装eclemma
安装eclemma我使用的是利用eclipse添加程序的方法。利用站点http://update.eclemma.org/添加,添加成功后就出现了eclemma的图标并可以进行覆盖检测了。
2)编写程序并测试
2.1 编写程序
程序如下,可以用来对三角形是否为等边等腰或者斜角进行判断。但是并不能检测出三个边是否能够构成三角形。
package mainapp;
public class triangle{
public int a,b,c;//输入参数
public int result;//存储结果
public int judge(int a,int b,int c){
if(a == b&&b ==c){
result = 1;
}
else if(a == b||b == c||c ==a){
result = 2;
}
else
{
result = 3;
}
return result;
}
}
2.2 生成测试用例
首先创建一个有重名包的另一个源文件夹
然后在triangle.java右键新建Junit测试用例:
选择在刚才新建的包里创建,这时程序会帮我们在那个包里生成一个名为triangleTest的测试用例,经过部分修改得到测试用例:
package mainapp;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class triangleTest {
triangle Tri;
int result;
@Before
public void setUp() throws Exception {
Tri = new triangle();
}
@Test
public void testequilateral(){
result = Tri.judge(2, 2, 2);
assertEquals(1,result);
}
@Test
public void testisosceles(){
result = Tri.judge(2, 2, 3);
assertEquals(2,result);
}
@Test
public void testscalene(){
result = Tri.judge(3, 2, 4);
assertEquals(3,result);
}
}
然后在该测试用例右键,运行方式,以Junit测试用例运行。得到运行结果:
这里还没有使用eclemma进行覆盖测试,我们点击eclemma的图标,并选择triangleTest,然后得到覆盖结果:
测试用例被全部覆盖详细信息出现在下方。至此单元测试完毕。
3)实验不足
本次实验中的测试程序本身存在一个错误,不会被测试用例检测出来。同时,测试用例中只是用了assertEqual()这一个功能,这个功能本身Junit内部好像已经集成了,并没有用到hamcrest其他的一些匹配器。