WebSphere Application Developer(WSAD)5.0提供了一組JUnit向導,簡化了JUnit的應用。其中一個向導能夠自動生成JUnit測試代碼,同時,WSAD的調試視圖還能夠清楚地顯示出JUnit測試的結果。
接下來我們來看看如何在WSAD中對下面的Java類進行JUnit測試:
// ReverseName.java
import org.apache.oro.text.perl.*;
public class ReverseName {
private Perl5Util perl = new Perl5Util();
public String reverse(String in) {
String out = perl.substitute( "s%([A-Z][a-z]*) ([A-Z][a-z]*)%$2, $1%", in);
return out;
}
}
這個類的功能是輸入一個字符串,例如“aa bb”,然后把它翻轉成逗號分隔的形式,即“bb,aa”。這個類用到了Jakarta的ORO包Perl4Util類的正則表達式功能。
為了進行測試,首要要從http://jakarta.apache.org的Jakarta網站下載和安裝ORO包,從http://www.junit.org下載和安裝JUnit工具。當然,你也可以修改ReverseName類,不要讓它使用Perl5Util類,免去安裝ORO包之勞。
下載好ORO包和JUnit工具后,在WSAD中創(chuàng)建一個新的項目,然后將ORO包和JUnit工具加入到項目的構造路徑,再把上面的代碼粘貼到ReverseName.java。將ORO包和JUnit工具加入構造路徑的步驟是:在瀏覽器視圖中選擇項目,按鼠標右鍵,選擇“特性”,再選擇“Java構建路徑”,在JAR文件選擇面板中,找到JUnit的安裝路徑并加入junit.jar文件。
創(chuàng)建JUnit測試實例的步驟是:在瀏覽器視圖中右擊ReverseName類文件,選擇菜單“新建”→“其他”,打開左邊樹形列表的Java節(jié)點,如圖一,選擇JUnit,然后在右邊清單中選擇“測試實例”,點擊“下一步”。
向導顯示出JUnit測試實例對話框。認可默認的源文件夾、包名稱、測試實例名稱等參數(shù)。選中main方法“public static void main(String[] args)”的檢查框,這時,“對下列項添加TestRunner語句”選項將變?yōu)榭捎。在下拉列表框中,選擇text ui。選中另外兩個方法——setup()、tearDown()的檢查框,如圖二。點擊“下一步”。
在“選擇應為其創(chuàng)建測試方法存根的方法”對話框中,如圖三,選中reverseName方法,然后點擊“完成”。
向導將生成下列代碼:
// ReverseNameTest.java
import junit.framework.TestCase;
public class ReverseNameTest extends TestCase {
public ReverseNameTest(String arg0) {super(arg0);}
public static void main(String[] args) {
junit.textui.TestRunner.run(ReverseNameTest.class);
}
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testReverseName() {
}
}
對于該類,注意下面幾點:
⑴ 它導入了junit.framework包。
⑵ 它擴展了junit.framework.TestCase。
⑶ 它包含了兩個特殊的JUnit方法,即setUp和tearDown。
⑷ 它只有一個測試方法,testReverseName,方法名稱中帶有必需的前綴test。
⑸ 它的main方法運行JUnit的文本版,調用特定的測試方法。
自動生成的ReverseNameTest類還需要加入一些測試代碼。不過本例不需要在setUp和tearDown方法中加入代碼,之所以要在向導中選中這兩個方法,是為了示范向導的功能。對于復雜一些的測試,我們可以讓setUp方法打開幾個文本流文件(或者是提取記錄集的JDBC數(shù)據(jù)庫連接),然后讓tearDown方法關閉這些文件流(或JDBC數(shù)據(jù)庫連接),JUnit將自動在測試開始、結束處調用setUp和tearDown方法。
下面我們加入一個測試。在編輯器中打開ReverseNameTest,修改testReverseName方法,使其包含下列代碼:
public void testReverseName() {
ReverseName fix = new ReverseName();
assertEquals(
fix.reverse("aa bb"),
"bb, aa");
assertEquals(
fix.reverse("cc dd"),
"dd, cc");
assertEquals(
fix.reverse("ee ff"),
"ee, ff");
}
TestCase基類提供了大量的assert方法,可以對各種各樣的條件進行測試。
保存修改之后,接下來可以運行測試了。在ReverseNameTest代碼窗口仍打開的狀態(tài)下,打開“調試”透視圖。點擊ReverseNameTest編輯器,確保該類處于可見狀態(tài)。點擊“運行”按鈕(圖標為跑步的人)旁邊的下拉箭頭,選擇“運行為”→“JUnit測試”。注意屏幕的底部有一個JUnit視圖,JUnit視圖顯示出下列內容:
Failer Trace section:
junit.framework.ComparisionFailure:
expected<ff, ee>but was<ee, ff>
at denoncourt.Reverse
如果所有測試都順利通過,JUnit不會顯示任何錯誤信息。