軟體測試——Junit、Hamcrest、Eclemma的安裝和使用
阿新 • • 發佈:2018-11-25
綜述
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);
}
}
結果