您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
用WSAD的JUnit向?qū)?zhí)行單元測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/8 15:54:47 ] 推薦標(biāo)簽:

WebSphere Application Developer(WSAD)5.0提供了一組JUnit向?qū),簡化了JUnit的應(yīng)用。其中一個(gè)向?qū)軌蜃詣?dòng)生成JUnit測試代碼,同時(shí),WSAD的調(diào)試視圖還能夠清楚地顯示出JUnit測試的結(jié)果。

接下來我們來看看如何在WSAD中對(duì)下面的Java類進(jìn)行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;
  }
}

這個(gè)類的功能是輸入一個(gè)字符串,例如“aa bb”,然后把它翻轉(zhuǎn)成逗號(hào)分隔的形式,即“bb,aa”。這個(gè)類用到了Jakarta的ORO包Perl4Util類的正則表達(dá)式功能。

為了進(jìn)行測試,首要要從http://jakarta.apache.org的Jakarta網(wǎng)站下載和安裝ORO包,從http://www.junit.org下載和安裝JUnit工具。當(dāng)然,你也可以修改ReverseName類,不要讓它使用Perl5Util類,免去安裝ORO包之勞。

下載好ORO包和JUnit工具后,在WSAD中創(chuàng)建一個(gè)新的項(xiàng)目,然后將ORO包和JUnit工具加入到項(xiàng)目的構(gòu)造路徑,再把上面的代碼粘貼到ReverseName.java。將ORO包和JUnit工具加入構(gòu)造路徑的步驟是:在瀏覽器視圖中選擇項(xiàng)目,按鼠標(biāo)右鍵,選擇“特性”,再選擇“Java構(gòu)建路徑”,在JAR文件選擇面板中,找到JUnit的安裝路徑并加入junit.jar文件。

創(chuàng)建JUnit測試實(shí)例的步驟是:在瀏覽器視圖中右擊ReverseName類文件,選擇菜單“新建”→“其他”,打開左邊樹形列表的Java節(jié)點(diǎn),如圖一,選擇JUnit,然后在右邊清單中選擇“測試實(shí)例”,點(diǎn)擊“下一步”。

向?qū)э@示出JUnit測試實(shí)例對(duì)話框。認(rèn)可默認(rèn)的源文件夾、包名稱、測試實(shí)例名稱等參數(shù)。選中main方法“public static void main(String[] args)”的檢查框,這時(shí),“對(duì)下列項(xiàng)添加TestRunner語句”選項(xiàng)將變?yōu)榭捎。在下拉列表框中,選擇text ui。選中另外兩個(gè)方法——setup()、tearDown()的檢查框,如圖二。點(diǎn)擊“下一步”。

在“選擇應(yīng)為其創(chuàng)建測試方法存根的方法”對(duì)話框中,如圖三,選中reverseName方法,然后點(diǎn)擊“完成”。

向?qū)⑸上铝写a:

// 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() {
  }
}

對(duì)于該類,注意下面幾點(diǎn):

⑴ 它導(dǎo)入了junit.framework包。

⑵ 它擴(kuò)展了junit.framework.TestCase。

⑶ 它包含了兩個(gè)特殊的JUnit方法,即setUp和tearDown。

⑷ 它只有一個(gè)測試方法,testReverseName,方法名稱中帶有必需的前綴test。

⑸ 它的main方法運(yùn)行JUnit的文本版,調(diào)用特定的測試方法。

自動(dòng)生成的ReverseNameTest類還需要加入一些測試代碼。不過本例不需要在setUp和tearDown方法中加入代碼,之所以要在向?qū)е羞x中這兩個(gè)方法,是為了示范向?qū)У墓δ。?duì)于復(fù)雜一些的測試,我們可以讓setUp方法打開幾個(gè)文本流文件(或者是提取記錄集的JDBC數(shù)據(jù)庫連接),然后讓tearDown方法關(guān)閉這些文件流(或JDBC數(shù)據(jù)庫連接),JUnit將自動(dòng)在測試開始、結(jié)束處調(diào)用setUp和tearDown方法。

下面我們加入一個(gè)測試。在編輯器中打開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方法,可以對(duì)各種各樣的條件進(jìn)行測試。

保存修改之后,接下來可以運(yùn)行測試了。在ReverseNameTest代碼窗口仍打開的狀態(tài)下,打開“調(diào)試”透視圖。點(diǎn)擊ReverseNameTest編輯器,確保該類處于可見狀態(tài)。點(diǎn)擊“運(yùn)行”按鈕(圖標(biāo)為跑步的人)旁邊的下拉箭頭,選擇“運(yùn)行為”→“JUnit測試”。注意屏幕的底部有一個(gè)JUnit視圖,JUnit視圖顯示出下列內(nèi)容:

Failer Trace section:
junit.framework.ComparisionFailure:
expected<ff, ee>but was<ee, ff>
at denoncourt.Reverse

如果所有測試都順利通過,JUnit不會(huì)顯示任何錯(cuò)誤信息。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd