首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBuilder 2005 單元測試實戰 (二):測試用例編寫與 TestSuite 批量運行

     編輯:Java 相關知識

承接上篇業務類分析,本文演示在 JBuilder 2005 中創建測試用例、編寫斷言邏輯、組裝測試套件並批量運行的完整操作流程。

創建 StringUtils 測試用例

  1. 專案窗格選中 StringUtils.java
  2. File → New → Test → Test Case (雙擊圖標)
  3. 目標方法選 string2Array,測試類名接受默認 TestStringUtils
  4. 向導生成骨架代碼

測試代碼精煉與編寫

1. 清理模板代碼

  • 刪除 setUp()/tearDown() (靜態方法無需 Fixture)
  • 刪除生成的 testString2Array() 方法體

2. 添加數組比較輔助方法

JUnit 無內置數組 assertEquals,需自行實現:

private boolean isArrayEquals(String[] arr1, String[] arr2) {
    if (arr1 == null || arr2 == null) {
        return arr1 == null && arr2 == null;  // 同為 null 視為相等
    }
    if (arr1.length != arr2.length) return false;
    for (int i = 0; i < arr1.length; i++) {
        if (!arr1[i].equals(arr2[i])) return false;
    }
    return true;
}

3. 編寫綜合測試方法

public void testString2Array() {
    // 測試數據準備
    String str1 = null, str2 = "", str3 = "a", str4 = "a,b,c", str5 = ",a,b,";
    String[] arr1 = null, arr2 = {""}, arr3 = {"a"}, arr4 = {"a","b","c"},
             arr5 = {"","a","b",""}, trimArr5 = {"a","b"};

    // 斷言矩陣
    assertNull(StringUtils.string2Array(str1, ',', false));
    assertTrue(isArrayEquals(arr1, StringUtils.string2Array(str1, ',', false)));
    assertTrue(isArrayEquals(arr2, StringUtils.string2Array(str2, ',', false)));
    assertTrue(isArrayEquals(arr3, StringUtils.string2Array(str3, ',', false)));
    assertTrue(isArrayEquals(arr4, StringUtils.string2Array(str4, ',', false)));
    assertTrue(isArrayEquals(arr5, StringUtils.string2Array(str5, ',', false)));
    assertTrue(isArrayEquals(trimArr5, StringUtils.string2Array(str5, ',', true)));
    assertFalse(isArrayEquals(
        StringUtils.string2Array(str5, ',', false),
        StringUtils.string2Array(str5, ',', true)
    ));
}

運行單個測試用例

  • 編輯器標籤右鍵 → Run Test using "Default"
  • 或專案窗格文件節點右鍵 → Run Test using Defaults
  • JBuilder 啟動 JBTestRunner 圖形化顯示綠燈/紅燈

注意:若右鍵菜單僅顯示 Run Test using "TestSubsection",需在 Project Properties → Run 中取消 TestSubsection 的 Context Menu 勾選。

創建測試套件 批量運行

1. 啟動向導

File → New → Test → Test Suite

選擇套件中捆綁的測試用例

2. 選擇捆綁用例

  • 列表勾選 TestSubsection、TestStringUtils
  • 支持 Add Recursively 整目錄導入

3. 指定套件類名

指定測試套件類名

  • 接受默認 TestSuite1

4. 生成套件代碼結構

public class TestSuite1 extends TestCase {
    public TestSuite1(String s) { super(s); }

    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTestSuite(TestStringUtils.class);
        suite.addTestSuite(TestSubsection.class);
        return suite;
    }
}

5. 套件擴展能力

// 添加另一個測試套件 (嵌套)
suite.addTest(anotherSuite);

// 添加單個測試方法
suite.addTest(new TestSubsection("testGetValue"));

運行測試套件

  • 專案窗格 TestSuite1 節點右鍵 → Run Test using Defaults
  • JBTestRunner 顯示樹狀結構:套件 → 用例類 → 測試方法
  • 所有綠燈 = 全部通過

用測試套件運行組合運行多個測試用例

測試結果分析與缺陷驗證

測試類方法預期實際說明
TestSubsectiontestGetValue綠燈紅燈 (d=33)暴露 d*d*d 溢出缺陷
TestSubsectiontestSign綠燈綠燈三分支覆蓋
TestStringUtilstestString2Array綠燈綠燈7 子場景全覆蓋

缺陷修復驗證循環

  1. 修復 Subsection.getValue 添加溢出保護
  2. 重新運行 TestSuite1
  3. 確認全部綠燈 → 回歸測試通過

最佳實踐總結

  1. 測試代碼即文檔:測試方法名描述場景 (testString2Array_TrimTrue_RemovesEmptyEdges)
  2. 一斷言原則:單測方法最好驗證單一行為,失敗定位精準
  3. 數據構建分離:複雜測試數據提取為 @BeforeClass 或工廠方法
  4. 套件分層:單元測試套件 (快) / 集成測試套件 (慢) 分離 CI 階段
  5. 紅燈即阻塞:提交前必跑全量套件,紅燈視為構建失敗

JBuilder 圖形化測試工具雖屬上一代 IDE,但「測試用例 → 測試套件 → 批量運行 → 缺陷暴露 → 修復驗證」的核心工作流在現代 IDE (IntelliJ/Eclipse/VS Code) 中完全延續,工具變了,工程紀律不變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved