熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JBuilder2005單元測試之捆綁多個用例

2013-11-23 19:19:27  來源: Java核心技術 

  目前我們只為Subsection類生成了一個測試用例在這節裡我們按照前述的方法通過Test Case向導為StringUtils類創建一個測試用例代碼框架並編寫測試方法然後將這兩個測試用例捆綁組合在一個測試套件中一起運行
  
  選中StringUtils類通過File>New>Test雙擊Test Case圖標為StringUtils類的stringArray()方法創建測試用例接受默認的測試用例類名TestStringUtils
  
  在向導生成的測試用例代碼框架中刪除測試固件(因為是靜態方法沒有必要用固件)即刪除StringUtils的成員變量聲明setUp()和tearDown()方法並在類中定義一個isArrayEquals()的方法刪除向導生成的testStringArray()測試方法體中的內容編寫自己的測試代碼其最終代碼如下所示
  
  代碼清單 錯誤!文檔中沒有指定樣式的文字TestStringUtilsStringUtils類的測試用例
  
   package chapter;
   import junitframework*;
   public class TestStringUtils extends TestCase
   {
    public void testStringArray() {
     String str = null str = str = a str = abcstr = ab;
     String[] arr = null arr = {} arr = {a} arr = {a b c}
     arr = { a b } trimArr = {a b};
  
    assertNull(StringUtilsstringArray(str false));
    assertTrue(isArrayEquals(arr StringUtilsstringArray(str false)));
    assertTrue(isArrayEquals(arr StringUtilsstringArray(str false)));
    assertTrue(isArrayEquals(arr StringUtilsstringArray(str false)));
    assertTrue(isArrayEquals(arr StringUtilsstringArray(str false)));
    assertTrue(isArrayEquals(arr StringUtilsstringArray(str false)));
    assertTrue(isArrayEquals(trimArr StringUtilsstringArray(str true)));
    assertFalse(isArrayEquals(StringUtilsstringArray(str false)
    StringUtilsstringArray(str true)));
   }
  
   //判斷兩個字符數組是否相等
   private boolean isArrayEquals(String[] arr String[] arr) {
    if (arr == null || arr == null) {
     if (arr == null && arr == null) {
      return true;
     } else {
      return false;
     }
    } else if (arrlength != arrlength) {
     return false;
    } else {
     for (int i = ; i < arrlength; i++) {
      if (!arr[i]equals(arr[i])) {
       return false;
      }
     }
     return true;
    }
   }
   }
  
  雖然JUnit框架提供了許多assertEquals()的重載方法但卻沒有入參是兩字符串數組的assertEquals()重載方法所以我們需要自己定義一個判斷兩字符串數組是否相同的方法isArrayEquals()如第~行所示
  
  在testStringArray()方法中我們提供了覆蓋多數情況的字符串測試點(特殊轉換字符串和其目標值)如第~行所示爾後調用assertXxx()設置測試規則你也可以像上一節中的TestSubsection測試用例一樣運行它
  
  注意
  
  如果你在內容窗格TestStringUtils文件標簽上右擊發現彈出的菜單中只有Run Test using TestSubsection請在Project>Project Properties>Run>在Run設置頁中取消TestSubsection運行設置項的Context Menu選項否則只會運行原TestSubsection的測試用例
  
  只包括個類左右的小型項目工程也許無需用到測試套件僅通過逐一單獨運行測試用例來完成測試就可以了但對於一個包含較多測試用例的工程測試套件能給你帶來極大的方便它將多個測試用例捆綁在一起運行達到一呼而百應的批量處理效果
  
  下面我們就來為TestSubsection和TestStringUtils這兩個測試用例創建一個測試套件並通過測試套件運行這兩個測試
  
  .File>New>Test>在Test頁中雙擊Test Suite圖標啟動創建測試套件的向導如下圖所示
   educitycn/img_///jpg>
  在對話框列表中已經列出了工程中已有的兩上測試用例類你可以通過右邊的Add和Remove添加或刪除測試用例你可以通過Add Recursively將指定目錄下的所有測試用例一並加入
  
  點擊Next到下一步
  
  .指定測試套件類名
   educitycn/img_///jpg>
  接受JBuilder為測試套件所提供的默認類名按Finish完成該測試套件的創建其代碼如下所示
  
  代碼清單 錯誤!文檔中沒有指定樣式的文字測試套件類
  
   package chapter;
   import junitframework*;
   public class TestSuite
   extends TestCase
   {
    public TestSuite(String s) {
     super(s);
    }
  
   public static Test suite() {
    TestSuite suite = new TestSuite();
    suiteaddTestSuite(chapterTestStringUtilsclass);
    suiteaddTestSuite(chapterTestSubsectionclass);
    return suite;
   }
   }
  
  測試套件類最主要的代碼是suite()方法(第~行)首先在方法中聲明一個TestSuite變量通過addTestSuite()方法將TestStringUtils和TestSubsection測試用例捆綁在一起你也可以通過這個方法添加其他的測試用例類
  
  TestSuite除可以將整個測試用例捆綁外還可以捆綁另外的一個測試套件或一個測試用例中的測試方法
  
  添加一個測試套件
  
  suiteaddTest(suite_)
  
  添加測試用例某個方法
  
  suiteaddTest(new TestSubsection (testGetValue))
  
  在工程窗格資源樹的TestSuite文件節點上右擊在彈出的菜單中選擇Run Test using DefaultsJBuilder啟動JBTestRunner運行套件中捆綁的所有測試用例其窗口如下圖所示
  educitycn/img_///jpg>
  TestSuite下有兩個測試用例類測試用例節點下是測試方法節點
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26658.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.