Junit,hamcrest,eclemma单元测试基础(java)

时间:2021-07-27 05:12:49

 

本次实验是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。导入后就可以生成测试实例和进行测试了。

  Junit,hamcrest,eclemma单元测试基础(java)

Junit,hamcrest,eclemma单元测试基础(java)  

1.2      安装eclemma

  安装eclemma我使用的是利用eclipse添加程序的方法。利用站点http://update.eclemma.org/添加,添加成功后就出现了eclemma的图标并可以进行覆盖检测了。

Junit,hamcrest,eclemma单元测试基础(java)

Junit,hamcrest,eclemma单元测试基础(java)

Junit,hamcrest,eclemma单元测试基础(java) 

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  生成测试用例

              首先创建一个有重名包的另一个源文件夹

Junit,hamcrest,eclemma单元测试基础(java)

 

              然后在triangle.java右键新建Junit测试用例:

 

 Junit,hamcrest,eclemma单元测试基础(java)

选择在刚才新建的包里创建,这时程序会帮我们在那个包里生成一个名为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测试用例运行。得到运行结果:

 Junit,hamcrest,eclemma单元测试基础(java)

这里还没有使用eclemma进行覆盖测试,我们点击eclemma的图标,并选择triangleTest,然后得到覆盖结果:

 

 Junit,hamcrest,eclemma单元测试基础(java)Junit,hamcrest,eclemma单元测试基础(java)

测试用例被全部覆盖详细信息出现在下方。至此单元测试完毕。

3)实验不足

       本次实验中的测试程序本身存在一个错误,不会被测试用例检测出来。同时,测试用例中只是用了assertEqual()这一个功能,这个功能本身Junit内部好像已经集成了,并没有用到hamcrest其他的一些匹配器。