【Software Testing】使用JUnit以及Eclemma进行单元测试和覆盖测试

1. 在Eclipse下安装JUnit以及Hamcrest.

  事前准备:下载好JUnit以及Hamcrest的jar包,提供github的下载网址

https://github.com/junit-team/junit/wiki/Download-and-Install

  下载好了上述两个jar包之后,打开Eclipse,新建java project,右键完成好的工程文件夹,选择BuildPath选项。

  之后,在弹出的窗口中进行如下操作:选中“Libraries”,点击“Add ExternalJARS”,选择上述两个jar包的下载路径,选中jar包即可。至此,安装完毕。

2.在Eclipse下安装Eclemma

  安装Eclemma的方法有许多,此处提供一种在线一键安装的方法:

  打开Eclipse,选择Help->EclipseMarketplace

  在出现的窗口中,选择Search,在输入框中填入"eclemma",点击搜索按钮后会显示搜索结果,直接在搜索结果处点击install即可。

  

  安装结束后,重启Eclipse,在工具栏出现这个按钮的时候,说明eclemma安装成功。

3.编写代码完成三角形形状的检测

  按照实验要求,本次实验要求进行测试的代码为一段检测一个三角形形状的代码:给定三角形三条边的长度,判断该三角形是等边三角形还是等腰三角形还是普通三角形。

  编写三角形类,有三个成员变量,分别表示三角形的三条边,根据三角形的构成条件,首先进行判断,三条边是否能够组成一个三角形,如果不能,那么返回一个错误信息,表明输入的三条边不能组成一个三角形,属于非法输入。如果通过判断表明这三条边可以构成三角形,那么再根据等边三角形和等腰三角形的判定条件来判断具体的形状即可。具体代码如下

public class tri {
    public int a,b,c;
    public tri(int a, int b,int c){
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public String judgement(){
        if( a+b<=c || a+c<=b || b+c <=a){
            return "Not a triangle";
        }else{
            if(a==b&&a==c){
                return "equilateral";
            }else if(a == c && b != c){
                return "isosceles";
            }else{
                return "scalene";
            }
        }
    }
    
}

  三角形类编写完成之后,编写测试函数,给定输入和预期的输出,通过JUnit来进行测试。

import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
public class main {
    public tri t;
    @Before
    public void create(){
        t = new tri();
    }
    @Test
    public void Test(){
        t = new tri(1,1,1);
        assertEquals("equilateral",t.judgement());
        t = new tri(1,2,2);
        assertEquals("isosceles",t.judgement());
        t = new tri(2,1,2);
        assertEquals("isosceles",t.judgement());
        t = new tri(1,2,3);
        assertEquals("Not a triangle",t.judgement());
        t = new tri(3,4,5);
        assertEquals("scalene",t.judgement());
        
    }
}

 4.测试结果

  JUnit测试

  Eclemma下的覆盖率测试(代码片段)

  

原文地址:https://www.cnblogs.com/mumu95/p/5290146.html