在Eclipse中使用JUnit4進行單元測試(0基礎篇)

weixin_33831673發表於2014-07-27
本文絕大部分內容引自這篇文章:

http://www.devx.com/Java/Article/31983/0/page/1

我們在編寫大型程式的時候,須要寫成千上萬個方法或函式,這些函式的功能可能非常強大,但我們在程式中僅僅用到該函式的一小部分功能,而且經過除錯能夠確定,這一小部分功能是正確的。可是,我們同一時候應該確保每個函式都全然正確,由於假設我們今後假設對程式進行擴充套件,用到了某個函式的其它功能,而這個功能有bug的話,那絕對是一件非常鬱悶的事情。所以說,每編寫完一個函式之後,都應該對這個函式的方方面面進行測試,這種測試我們稱之為單元測試。傳統的程式設計方式,進行單元測試是一件非常麻煩的事情,你要又一次寫另外一個程式,在該程式中呼叫你須要測試的方法,而且細緻觀察執行結果,看看是否有錯。正由於如此麻煩,所以程式猿們編寫單元測試的熱情不是非常高。於是有一個牛人推出了單元測試包,大大簡化了進行單元測試所要做的工作,這就是JUnit4。本文簡要介紹一下在Eclipse3.2中使用JUnit4進行單元測試的方法。

首先,我們來一個傻瓜式速成教程,不要問為什麼,Follow Me,先來體驗一下單元測試的快感!

首先新建一個專案叫JUnit_Test,我們編寫一個Calculator類,這是一個可以簡單實現加減乘除、平方、開方的計算器類,然後對這些功能進行單元測試。這個類並非非常完美,我們有益保留了一些Bug用於演示,這些Bug在凝視中都有說明。該類程式碼例如以下:


package andycpp;

public class Calculator ...{
    
private static int result; // 靜態變數,用於儲存執行結果
    public void add(int n) ...{
        result 
= result + n;
    }

    
public void substract(int n) ...{
        result 
= result - 1//Bug: 正確的應該是 result =result-n
    }

    
public void multiply(int n) ...{
    }
         // 此方法尚未寫好
    public void divide(int n) ...{
        result 
= result / n;
    }

    
public void square(int n) ...{
        result 
= n * n;
    }

    
public void squareRoot(int n) ...{
        
for (; ;) ;            //Bug : 死迴圈
    }

    
public void clear() ...{     // 將結果清零
        result = 0;
    }

    
public int getResult() ...{
        
return result;
    }

}

第二步,將JUnit4單元測試包引入這個專案:在該專案上點右鍵,點“屬性”,如圖:



在彈出的屬性窗體中,首先在左邊選擇“Java Build Path”,然後到右上選擇“Libraries”標籤,之後在最右邊點選“Add Library…”button,例如以下圖所看到的:


然後在新彈出的對話方塊中選擇JUnit4並點選確定,如上圖所看到的,JUnit4軟體包就被包括進我們這個專案了。

    第三步,生成JUnit測試框架:在EclipsePackage Explorer中用右鍵點選該類彈出選單,選擇“New à JUnit Test Case”。例如以下圖所看到的:


在彈出的對話方塊中,進行對應的選擇,例如以下圖所看到的:


    點選“下一步”後,系統會自己主動列出你這個類中包括的方法,選擇你要進行測試的方法。此例中,我們僅對“加、減、乘、除”四個方法進行測試。例如以下圖所看到的:


之後系統會自己主動生成一個新類CalculatorTest,裡面包括一些空的測試用例。你僅僅須要將這些測試用例稍作改動就可以使用。完整的CalculatorTest程式碼例如以下:


package andycpp;

import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class CalculatorTest ...{

    
private static Calculator calculator = new Calculator();
    
    @Before
    
public void setUp() throws Exception ...{
        calculator.clear();
    }


    @Test
    
public void testAdd() ...{
        calculator.add(
2);
        calculator.add(
3);
        assertEquals(
5, calculator.getResult());
    }


    @Test
    
public void testSubstract() ...{
        calculator.add(
10);
        calculator.substract(
2);
        assertEquals(
8, calculator.getResult());
    }


    @Ignore(
"Multiply() Not yet implemented")
    @Test
    
public void testMultiply() ...{
    }


    @Test
    
public void testDivide() ...{
        calculator.add(
8);
        calculator.divide(
2);
        assertEquals(
4, calculator.getResult());
    }

}

第四步,執行測試程式碼:依照上述程式碼改動完成後,我們在CalculatorTest類上點右鍵,選擇“Run As à JUnit Test”來執行我們的測試,例如以下圖所看到的:

執行結果例如以下:


進度條是紅顏色表示發現錯誤,詳細的測試結果在進度條上面有表示“共進行了4個測試,當中1個測試被忽略,一個測試失敗”

            至此,我們已經完總體驗了在Eclipse中使用JUnit的方法。在接下來的文章中,我會詳解測試程式碼中的每個細節!

相關文章