本文是在前人的基礎上完善而成http://blog.csdn.net/andycpp/article/details/1327147
由于eclipse開發工具內建了JUnit,是以在eclipse中無需下載下傳和安裝,直接将JUnit4單元測試包引入這個項目中便可使用。
第一步:在eclipse中建立一個項目:JUnitTestProject,編寫一個待測類:Calculator。項目結構如下圖:
Calculator類中的代碼為:
package com.edward.junit;
public class Calculator {
public int add(int a, int b)
{
return a + b;
}
public int subtract(int a, int b)
{
return a - b;
}
public int multiply(int a, int b)
{
return a * b;
}
public int divide(int a, int b) throws Exception
{
if(b==0){
throw new Exception("除數不能為0");
}
return a / b;
}
}
第二步:将JUnit單元測試包引入這個項目:選中項目名JUnitTestProject,右鍵彈出菜單中選擇最後一項Properties(屬性),在彈出的對話框中依次選擇:Java Build Path /Libraries/Add Library…
點選Add Library...後,彈出的對話框,如下圖:
選擇JUnit,點選Next,進入JUnit Library界面,如下圖:
選擇JUnit4後,點選Finish。可以看到JUnit4已經添加到Libraries中。
點選OK,完成JUnit4單元測試包的導入,會發現JUnit4出現在項目清單中。
第三步,生成JUnit測試架構:采用并行樹的方式放置測試代碼,保證測試代碼與被測代碼的獨立性,是以首先在項目目錄下,建立檔案test:項目名右鍵new再選擇SourceFolder,如下圖:
在彈出的對話框中,Folder name處,輸入檔案名:test。如下圖:
點選Finish,會發現項目工程的結構如下圖:
項目名JUnitTestProject右鍵,選擇new,再選擇JUnit Test Case,若沒有,則選擇Other…,如下圖:
選擇Java目錄下,JUnit目錄下,JUnit Test Case彈出對話框,如下圖:
點選(1)處,在彈出的對話框中,将存放目錄更改為test,如下圖:
在(2)處輸入類名CalculatorTest 點選(3)處,指定待測類的類名,如下圖:
其他地方預設即可,點選Next, 系統會自動列出待測類中包含的方法,選擇你要進行測試的方法(僅對圖中四個方法add、subtract、multiply、divide進行測試),如圖:
點選Finish,系統會自動生成一個新類CalculatorTest,裡面包含一些空的測試方法。隻需要将這些測試方法稍作修改即可使用,項目工程的結構,如下圖:
測試類CalculatorTest中的代碼為:
package com.edward.junit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
public class CalculatorTest {
private Calculator calculator = null;//一、建立被測對象
@Before
public void setUp() throws Exception {
//生成成員變量執行個體
calculator = new Calculator();//二、初始化被測對象
}
//三、構造測試方法
@Test
public void testAdd() {
int result=calculator.add(1,2);//四、調用被測方法,取得方法的傳回值或系統狀态的變化
//判斷方法的傳回結果 //五、創“建期待結果”即:第一個參數期望值,
assertEquals(3,result);//六、調用合适的Assert方法
}//第一個參數是期望值,第二個參數是要驗證的值;
@Test
public void testSubtract() {
int result = calculator.subtract(1, 2);
assertEquals(-1, result);
}
@Test
public void testMultiply() {
int result = calculator.multiply(2, 3);
assertEquals(6, result);
}
@Test
public void testDivide() {
int result = 0;
try {
result = calculator.divide(12, 3);
} catch (Exception e) {
e.printStackTrace();
//如果抛出異常,證明測試失敗,沒有通過,沒通過的測試計數在Failures中、
fail();//如果不加這一會,程式進入到catch後,無法判斷其失敗。
}
// 判斷方法的傳回結果
assertEquals(4, result);// 第一個參數是期望值,第二個參數是要驗證的值
}
}
第四步,運作測試代碼,按照上述代碼修改完畢後,在CalculatorTest類上點右鍵,選擇“RunAs / JUnit Test”來運作我們的測試,如下圖所示:
結果運作如下圖所示:
若待測類中存在bug,比如對Calculator類中的add( )方法和subtract( )做以下更改:
public int add(int a, int b)
{
return a - b;//此處存在bug,正确的代碼應該是a + b;
}
public int subtract(int a, int b)
{
return a + b;//此處存在bug,正确的代碼應該是a - b;
}
重複第四步,運作結果如下:
進度條顯示為褐色,表示測試發現錯誤,具體測試結果在對話框中均勻展現:總共運作了4個測試Runs:4/4;測試類運作正常未發現問題Error:0;發現2處測試失敗Failures:2。