SQLUnit 是一個基於 Java 的資料庫回歸測試框架,專門針對**儲存程序、函數、觸發器**進行單元測試。測試案例以 **XML** 定義,SQLUnit 透過 JUnit 執行引擎,將 XML 轉為 JDBC 呼叫,比對資料庫實際回傳結果與預期結果。
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:XE
test_user
test_pass
INSERT INTO test_cards (card_no) VALUES ('4992739871')
validate_card
1
6
DELETE FROM test_cards WHERE card_no = '4992739871'
作者分享以 SQLUnit 測試 Oracle PL/SQL create_check_digit 函數 (實作 Luhn 演算法產生信用卡檢查碼) 的經驗:
[sqlunit] *** Running SQLUnit file: p_cc.xml
[sqlunit] Getting connection(DEFAULT)
[sqlunit] Setting up test...
[sqlunit] Running test[1]: PASSING NULL (125ms)
[sqlunit] Running test[2]: VALID CARD NUMBER (4992739871) (15ms)
[sqlunit] Running test[3]: VALID CARD NUMBER (4012888888881881) (16ms)
...
[sqlunit] Tearing down test...
expected: 6, but got: 1。| 原因 | 現代替代方案 |
|---|---|
| 專案停止維護 (最後版本 2010s) | tSQLt (SQL Server)、utPLSQL (Oracle)、pgTAP (PostgreSQL) —— 原生 T-SQL/PLSQL 測試框架 |
| 需額外 Java 環境、Ant/Maven 整合複雜 | 資料庫原生框架零外部相依,直接在 SSMS/Azure Data Studio 執行 |
| XML 定義冗長,重構困難 | 原生框架用 SQL 撰寫測試,版控、重構、IDE 支援完整 |
SELECT * 隱性依賴。