一、引言
在本文開始,我將假定,你已經(jīng)了解由Kent Beck和Erich Gamma發(fā)明的這個Java單元測試框架并因此而略過必要的簡介。所以,我將集中分析從JUnit 3.8到新版本JUnit 4的遷移過程以及其在IDE和Ant中的集成。
JUnit 4是一種與其之前的版本完全不同的API,它根據(jù)Java 5.0中的新特征(注解,靜態(tài)導入等)構建而成。如你所見,JUnit 4更簡單、更豐富和更易于使用,而且它引入了更為靈活的初始化和清理工作,還有的和參數(shù)化測試用例。
代碼實例能說明問題。因此,在本文中,我將使用一個例子來展示不同的測試用例:一個計算器。該示例計算器很簡單,效率并不高,甚至還有一些錯誤;它僅僅操作整數(shù),并且把結果存儲在一個靜態(tài)變量中。Substract方法并不返回一個有效的結果,而且也沒有實現(xiàn)乘法運算,而且看上去在squareRoot方法中還存在一個錯誤:無限循環(huán)。這些錯誤將幫助說明使用JUnit 4進行測試的有效性。你可以打開和關閉這個計算器,而且你可以清除這些結果。下面是其實現(xiàn)代碼:
package calc;
public class Calculator {
private static int result; //存儲結果的靜態(tài)變量
public void add(int n) {
result = result + n;
}
public void substract(int n) {
result = result - 1; //錯誤:應該是"result = result - n"
}
public void multiply(int n) {} //還沒實現(xiàn)
public void divide(int n) {
result = result / n;
}
public void square(int n) {
result = n * n;
}
public void squareRoot(int n) {
for (; ;) ; //錯誤:無限循環(huán)
}
public void clear() { //清除結果
result = 0;
}
public void switchOn() { //打開屏幕,顯示"hello",并報警
result = 0; //實現(xiàn)其它的計算器功能
}
public void switchOff() { } //顯示"bye bye",報警,并關閉屏幕
public int getResult() {
return result;
}
}