單一測試案例中透過setUp()/tearDown()建立固件,僅限該案例內部複用。多測試案例共享固件時,需抽取至獨立類別。JBuilder預定義四種固件類別:
即使專案已有資料庫連線工具類,JDBC固件仍具優勢:向導整合、提供面向測試的豐富方法。
db/hr.jds// Employee.java - 實體類別
package chapter25.db;
public class Employee {
private String id, name;
private int age;
// 建構子、getter、equals()... 略
}
// EmployeeDAO.java - 資料存取物件
package chapter25.db;
import java.sql.*;
public class EmployeeDAO {
private Connection conn;
public EmployeeDAO(Connection conn) { this.conn = conn; }
public Employee findById(String id) throws SQLException {
String sql = "SELECT * FROM employee WHERE id = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, id);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
return new Employee(rs.getString("ID"),
rs.getString("NAME"),
rs.getInt("AGE"));
}
}
}
return null;
}
}
採用PreparedStatement防止SQL注入,try-with-resources自動關閉資源,展現現代Java最佳實踐。
在JBuilder中建立JDBC固件,設定驅動程式、URL、帳號密碼。測試案例自動注入Connection物件,DA0建構子接收連線,實現測試與業務邏輯解耦。固件還提供commit()/rollback()等事務控制方法,支援複雜測試場景。