程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JBuilder 2005單元測試之捆綁多個用例

JBuilder 2005單元測試之捆綁多個用例

編輯:關於JAVA

目前我們只為Subsection類生成了一個測試用例,在這節裡,我們按照前述的方法,通過Test Case向導為StringUtils類創建一個測試用例代碼框架,並編寫測試方法,然後將這兩個測試用例捆綁組合在一個測試套件中一起運行。

選中StringUtils類,通過File->New..->Test,雙擊Test Case圖標為StringUtils類的string2Array()方法創建測試用例,接受默認的測試用例類名TestStringUtils。

在向導生成的測試用例代碼框架中,刪除測試固件(因為是靜態方法,沒有必要用固件),即刪除StringUtils的成員變量聲明,setUp()和tearDown()方法。並在類中定義一個isArrayEquals()的方法,刪除向導生成的testString2Array()測試方法體中的內容,編寫自己的測試代碼,其最終代碼如下所示:

代碼清單 錯誤!文檔中沒有指定樣式的文字。TestStringUtils:StringUtils類的測試用例

1.package chapter25;
2.import junit.framework.*;
3.public class TestStringUtils extends TestCase
4.{
5.public void testString2Array() {
6.String str1 = null, str2 = "", str3 = "a", str4 = "a,b,c",str5 = ",a,b,";
7.String[] arr1 = null, arr2 = {""}, arr3 = {"a"}, arr4 = {"a", "b", "c"},
8.arr5 = {"", "a", "b", ""}, trimArr5 = {"a", "b"};
9.
10.assertNull(StringUtils.string2Array(str1, ',', false));
11.assertTrue(isArrayEquals(arr1, StringUtils.string2Array(str1, ',', false)));
12.assertTrue(isArrayEquals(arr2, StringUtils.string2Array(str2, ',', false)));
13.assertTrue(isArrayEquals(arr3, StringUtils.string2Array(str3, ',', false)));
14.assertTrue(isArrayEquals(arr4, StringUtils.string2Array(str4, ',', false)));
15.assertTrue(isArrayEquals(arr5, StringUtils.string2Array(str5, ',', false)));
16.assertTrue(isArrayEquals(trimArr5, StringUtils.string2Array(str5, ',', true)));
17.assertFalse(isArrayEquals(StringUtils.string2Array(str5, ',', false),
18.StringUtils.string2Array(str5, ',', true)));
19.}
20.
21.//判斷兩個字符數組是否相等
22.private boolean isArrayEquals(String[] arr1, String[] arr2) {
23.if (arr1 == null || arr2 == null) {
24.if (arr1 == null && arr2 == null) {
25.return true;
26.} else {
27.return false;
28.}
29.} else if (arr1.length != arr2.length) {
30.return false;
31.} else {
32.for (int i = 0; i < arr1.length; i++) {
33.if (!arr1[i].equals(arr2[i])) {
34.return false;
35.}
36.}
37.return true;
38.}
39.}
40.}

雖然JUnit框架提供了許多assertEquals()的重載方法,但卻沒有入參是兩字符串數組的assertEquals()重載方法,所以我們需要自己定義一個判斷兩字符串數組是否相同的方法:isArrayEquals(),如第22~39行所示。

在testString2Array()方法中,我們提供了覆蓋多數情況的字符串測試點(特殊轉換字符串和其目標值),如第6~8行所示。爾後調用assertXxx()設置測試規則。你也可以像上一節中的TestSubsection測試用例一樣運行它。

注意:

如果你在內容窗格TestStringUtils文件標簽上右擊,發現彈出的菜單中只有Run Test using "TestSubsection"時,請在Project->Project Properties...->Run->在Run設置頁中取消TestSubsection運行設置項的Context Menu選項,否則只會運行原TestSubsection的測試用例。

只包括10個類左右的小型項目工程也許無需用到測試套件,僅通過逐一單獨運行測試用例來完成測試就可以了,但對於一個包含較多測試用例的工程,測試套件能給你帶來極大的方便,它將多個測試用例捆綁在一起運行,達到一呼而百應的批量處理效果。

下面我們就來為TestSubsection和TestStringUtils這兩個測試用例創建一個測試套件,並通過測試套件運行這兩個測試。

1.File->New...->Test->在Test頁中雙擊Test Suite圖標啟動創建測試套件的向導,如下圖所示:

圖 錯誤!文檔中沒有指定樣式的文字。選擇套件中捆綁的測試用例

在對話框列表中已經列出了工程中已有的兩上測試用例類,你可以通過右邊的Add...和Remove添加或刪除測試用例。你可以通過Add Recursively,將指定目錄下的所有測試用例一並加入。

點擊Next到下一步。

2.指定測試套件類名。

圖 錯誤!文檔中沒有指定樣式的文字。指定測試套件類名

接受JBuilder為測試套件所提供的默認類名,按Finish完成該測試套件的創建,其代碼如下所示:

代碼清單 錯誤!文檔中沒有指定樣式的文字。測試套件類

1.package chapter25;
2.import junit.framework.*;
3.public class TestSuite1
4.extends TestCase
5.{
6.public TestSuite1(String s) {
7.super(s);
8.}
9.
10.public static Test suite() {
11.TestSuite suite = new TestSuite();
12.suite.addTestSuite(chapter25.TestStringUtils.class);
13.suite.addTestSuite(chapter25.TestSubsection.class);
14.return suite;
15.}
16.}

測試套件類最主要的代碼是suite()方法(第10~15行),首先在方法中聲明一個TestSuite變量,通過addTestSuite()方法將TestStringUtils和TestSubsection測試用例捆綁在一起,你也可以通過這個方法添加其他的測試用例類。

TestSuite除可以將整個測試用例捆綁外,還可以捆綁另外的一個測試套件或一個測試用例中的測試方法:

l 添加一個測試套件

suite.addTest(suite_1)

l 添加測試用例某個方法

suite.addTest(new TestSubsection ("testGetValue"))

在工程窗格資源樹的TestSuite1文件節點上右擊,在彈出的菜單中選擇Run Test using Defaults,JBuilder啟動JBTestRunner,運行套件中捆綁的所有測試用例,其窗口如下圖所示:

圖 錯誤!文檔中沒有指定樣式的文字。用測試套件運行組合運行多個測試用例

TestSuite下有兩個測試用例類,測試用例節點下是測試方法節點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved