1. 程式人生 > >軟體測試——Junit、Hamcrest、Eclemma的安裝和使用

軟體測試——Junit、Hamcrest、Eclemma的安裝和使用

綜述
1. JUnit是一個開放原始碼的Java測試框架,用於編寫和執行可重複的測試。他是用於單元測試框架體系xUnit的一個例項(用於java語言)。它包括以下特性:
1. 用於測試期望結果的斷言(Assertion)
2. 用於共享共同測試資料的測試工具
3. 用於方便的組織和執行測試的測試套件
4. 圖形和文字的測試執行器
2. Hamcrest是一個框架,協助編寫Java 程式語言的軟體測試。它支援建立自定義的斷言匹配器,允許定義匹配規則宣告。這些匹配器在單元測試框架中使用,如JUnit和jMock。Hamcrest自2012年以來一直被納入Junit。
3. EclEmma記錄在特定程式啟動期間執行Java程式碼的哪些部分。因此覆蓋分析總是涉及兩個步驟:執行程式,分析覆蓋資料。對於可重現的結果,啟動的程式通常是自動測試,如JUnit測試。執行覆蓋分析就像按下單個按鈕一樣簡單,像現有的執行和除錯按鈕。覆蓋率結果在“ 覆蓋率”檢視中自動彙總, 並在Java編輯器中突出顯示 。
安裝Junit


第一種方法:直接使用Eclipse整合的junit 4.1,可以免去下載和配置類庫的麻煩。在新建專案的時候點選庫選項,然後add library即可。但是不是所有的jar都有自帶的,為了更好的學習eclipse的使用,我們可以自己手動引用一下外部的庫。


第二種方法:新增外部的jar,首先自己去網上下載相應的包(可以從www.junit.org上下載,也可以從CSDN上搜索);然後在新建的專案上右鍵——》構建路徑——》新增外部文件——》找到你下載的jar包即可
安裝Hamcrest
方法同安裝Junit的第二種方法
安裝Eclemma
開啟Eclipse,選擇選單欄“幫助”——》Eclipse Marketplace,搜尋“Eclemma”,結果如圖:

點選安裝即可;使用時,右鍵專案,出現“Coverage As”選項,即說明Eclemma安裝成功,選擇一種方式執行即可
過程
在測試用例檔案中主要引入Junit中的檔案,還要在測試類extends TestCase否則assertEquals()函式執行不了。具體參見程式碼:
程式碼
Triangle.java

/**
 * 
 */
package testJunit;

import java.util.Scanner;

/**
 * @author think
 *
 */
public class Triangle {

    /**
     * @param args
     */
// public static void main(String[] args) { // while(true){ // System.out.print("請輸入三角形的三條邊,以空格分開:\n"); // Scanner s = new Scanner(System.in); // int a = s.nextInt(); // int b = s.nextInt(); // int c = s.nextInt(); // // System.out.print(check(a, b, c) + "\n"); // } // } public static String check(int a, int b, int c){ String str = ""; if(a == b && b == c){ str = "該三角形為等邊三角形"; }else if(a == b || a == c || b ==c){ str = "該三角形為等腰三角形"; }else if(a + b > c && a + c > b && b + c > a){ str = "該三角形為不規則三角形"; }else{ str = "這不是一個三角形"; } return str; } }

testCase.java

/**
 * 
 */
package testJunit;

import junit.framework.TestCase; 

/**
 * @author think
 *
 */
public class testCase extends TestCase {
    Triangle Tri = new Triangle();
    String equilateral = "該三角形為等邊三角形";
    String isosceles = "該三角形為等腰三角形";
    String scalene = "該三角形為不規則三角形";
    String nonTri = "這不是一個三角形";
    String res;

    public void testEquilateral(){
        res = Tri.check(1, 1, 1);
        assertEquals(equilateral, res);
    }

    public void testIsosceles(){
        res = Tri.check(1, 1, 2);
        assertEquals(isosceles, res);
    }

    public void testScalene(){
        res = Tri.check(2, 3, 4);
        assertEquals(scalene, res);
    }

    public void testNonTri(){
        res = Tri.check(1, 2, 3);
        assertEquals(nonTri, res);
    }

}

結果