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

JUnit 實戰入門:從核心概念到完整測試流程

     編輯:Java 相關知識

JUnit 是由 Erich Gamma 與 Kent Beck 創建的回歸測試框架,支援「寫一點、測一點、改一點」的微循環開發節奏。本文以實例演示從環境搭建到測試執行的完整流程。

測試分類速覽

  • 白箱測試:知曉內部實現(如單元測試),由開發人員執行
  • 黑箱測試:僅依規格文件,不關心內部結構
  • 單元測試:針對最小可測試單元(方法/類)
  • 整合測試:驗證多模組協作
  • 功能測試:從用戶視角驗證業務流程

環境搭建三步驟

  1. 下載 JUnit 官網 最新包,解壓至 c:\junit
  2. 設定 CLASSPATH 包含 c:\junit;junit.jar
  3. 驗證:java junit.swingui.TestRunner 啟動圖形介面,載入 junit.samples.AllTests 點擊 Run 觀察綠條

編寫第一個測試類

被測類 MyBean(模擬資料庫操作):

package junit.samples;
import java.sql.*;
public class MyBean {
    private Connection conn;
    public String con() {
        try { Class.forName("org.gjt.mm.mysql.Driver").newInstance();
            conn = DriverManager.getConnection("jdbc:mysql://192.168.0.88/weboa?user=root&password=");
            return "Connection Success!";
        } catch (Exception e) { System.out.println(e); return "Connection Error!"; }
    }
    public String gogo(String lmdm) {
        try { Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from TB_LM where N_LMDM='" + lmdm + "'");
            while (rs.next()) return rs.getString("N_SJID");
        } catch (Exception e) { return e.toString(); }
        finally { /* 關閉資源 */ }
    }
}

測試類 TestMyBean:

package junit.samples;
import junit.framework.*;
public class TestMyBean extends TestCase {
    private MyBean bean;
    public TestMyBean(String name) { super(name); }
    protected void setUp() { bean = new MyBean(); } // 每個 testXxx 前執行
    public static Test suite() { return new TestSuite(TestMyBean.class); } // 反射收集所有 testXxx
    public void testCon() {
        assertNotNull(bean);
        assertEquals("Connection Success!", bean.con());
    }
    public void testGogo() {
        bean.con();
        assertNotNull(bean);
        assertEquals("0", bean.gogo("1"));
    }
    // protected void tearDown() { /* 每個 testXxx 後執行,釋放資源 */ }
}

核心機制解析

  • setUp()/tearDown():每個測試方法前後自動執行,共享固件、隔離副作用
  • suite():靜態工廠方法,利用反射動態組裝測試套件
  • 斷言方法:assertEquals、assertTrue、assertNotNull 等,失敗拋出 AssertionFailedError

執行與結果解讀

# 文字介面
java junitfaq.SimpleTest
# 輸出:.  Time: 0  OK (1 tests)

# 圖形介面
java junit.swingui.TestRunner junitfaq.SimpleTest
# 綠條 = 全部通過,紅條 = 有失敗/錯誤

失敗 vs 錯誤:Failure 來自斷言不成立;Error 來自非預期異常(如 NullPointerException)。

組合測試套件

public static Test suite() {
    TestSuite suite = new TestSuite("All JUnit Tests");
    suite.addTest(VectorTest.suite());
    suite.addTest(TestMyBean.suite());
    return suite;
}

Web 應用同樣適用,只需在測試環境配置資料源與容器上下文。

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