在Eclipse中使用JUnit4進行單元測試(初級篇)
我們在編寫大型程式的時候,需要寫成千上萬個方法或函式,這些函式的功能可能很強大,但我們在程式中只用到該函式的一小部分功能,並且經過除錯可以確定,這一小部分功能是正確的。但是,我們同時應該確保每一個函式都完全正確,因為如果我們今後如果對程式進行擴充套件,用到了某個函式的其他功能,而這個功能有bug的話,那絕對是一件非常鬱悶的事情。所以說,每編寫完一個函式之後,都應該對這個函式的方方面面進行測試,這樣的測試我們稱之為單元測試。傳統的程式設計方式,進行單元測試是一件很麻煩的事情,你要重新寫另外一個程式,在該程式中呼叫你需要測試的方法,並且仔細觀察執行結果,看看是否有錯。正因為如此麻煩,所以程式設計師們編寫單元測試的熱情不是很高。於是有一個牛人推出了單元測試包,大大簡化了進行單元測試所要做的工作,這就是
首先,我們來一個傻瓜式速成教程,不要問為什麼,Follow Me,先來體驗一下單元測試的快感!
首先新建一個專案叫JUnit_Test,我們編寫一個Calculator類,這是一個能夠簡單實現加減乘除、平方、開方的計算器類,然後對這些功能進行單元測試。這個類並不是很完美,我們故意保留了一些Bug用於演示,這些Bug在註釋中都有說明。該類程式碼如下:
package andycpp;publicclass Calculator {
privatestaticint result; // 靜態變數,用於儲存執行結果
publicvoid add(int n) {
result = result + n;
}
publicvoid substract(int n) {
result = result -1; //Bug: 正確的應該是 result =result-n
}
publicvoid multiply(int n) {
}// 此方法尚未寫好
publicvoid divide(int n) {
result = result / n;
}
publicvoid square(int n) {
result
}
publicvoid squareRoot(int n) {
for (; ;) ; //Bug : 死迴圈
}
publicvoid clear() { // 將結果清零
result =0;
}
publicint getResult() {
return result;
}
}
第二步,將JUnit4單元測試包引入這個專案:在該專案上點右鍵,點“屬性”,如圖:
然後在新彈出的對話方塊中選擇JUnit4並點選確定,如上圖所示,JUnit4軟體包就被包含進我們這個專案了。
第三步,生成JUnit測試框架:在Eclipse的Package Explorer中用右鍵點選該類彈出選單,選擇“New à JUnit Test Case”。如下圖所示:
在彈出的對話方塊中,進行相應的選擇,如下圖所示:
點選“下一步”後,系統會自動列出你這個類中包含的方法,選擇你要進行測試的方法。此例中,我們僅對“加、減、乘、除”四個方法進行測試。如下圖所示:
之後系統會自動生成一個新類CalculatorTest,裡面包含一些空的測試用例。你只需要將這些測試用例稍作修改即可使用。完整的CalculatorTest程式碼如下:
package andycpp;importstatic org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
publicclass CalculatorTest {
privatestatic Calculator calculator =new Calculator();
@Before
publicvoid setUp() throws Exception {
calculator.clear();
}
@Test
publicvoid testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());
}
@Test
publicvoid testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
publicvoid testMultiply() {
}
@Test
publicvoid testDivide() {
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}
}
第四步,執行測試程式碼:按照上述程式碼修改完畢後,我們在CalculatorTest類上點右鍵,選擇“Run As à JUnit Test”來執行我們的測試,如下圖所示:
執行結果如下:
進度條是紅顏色表示發現錯誤,具體的測試結果在進度條上面有表示“共進行了4個測試,其中1個測試被忽略,一個測試失敗”
至此,我們已經完整體驗了在Eclipse中使用JUnit的方法。在接下來的文章中,我會詳細解釋測試程式碼中的每一個細節!