xlsunit面向數(shù)據(jù)庫應(yīng)用的單元測試框架
xlsunit 輔助junit,用于輔助基于 Spring、SpringBoot 企業(yè)信息系統(tǒng)單元測試,這種企業(yè)信息系統(tǒng)都會有大量的數(shù)據(jù)庫操作,使用 xlsunit 來初始化測試前的數(shù)據(jù)庫,以及使用 xlsunit 來比較業(yè)務(wù)調(diào)用后的數(shù)據(jù)庫數(shù)據(jù),能減少單元測試工作量,增強(qiáng)單元測試可維護(hù)性。
xlsunit 用 excel 來模擬數(shù)據(jù)庫表數(shù)據(jù),適合那種一次業(yè)務(wù)操作,多個表數(shù)據(jù)變化的應(yīng)用系統(tǒng)。
XLSParser workflowParser = null;
//
@Autowrired WorkflowService workflowService;
//
@MockBean
private ThirdPatyUserService userService;
@Autowired
protected SQLManager sqlManager;
@Before
public void init() {
super.init();
//XLSUnit BeetlSql
DBAccess dbAccess = new BeetlSqlDBAccess(sqlManager);
// Excel
XLSFileLoader loader = new XLSFileLoader("root");
//
workflowParser = new XLSParser(loader, "user.xlsx", dbAccess,
new
RowHolderFacotoy.RowBeetlSQLHolderFactory());
}
public void testUser1() {
//執(zhí)行某個測試場景的初始化工作,初始化user表
VariableTable vars = new VariableTable();
userParser.init(vars);
//開始測試,從excel中獲取userId和password
userParser.prepare("場景1", vars);
Integer id = (Integer) vars.find("id");
String newPassword = vars.findString("test.password");
//調(diào)用業(yè)務(wù)代碼,修改用戶密碼
userSerivce2.modifyUserInfo(id, newPassword);
//比較數(shù)據(jù)庫里的數(shù)據(jù)跟場景1的數(shù)據(jù)是否一致
userParser.test("場景1", vars);
}
可以將測試數(shù)據(jù)寫在 excel 里,或者通過數(shù)據(jù)庫客戶端工具粘貼到 excel 里完成數(shù)據(jù)的輸入。
可以用擁有任意多個 excel 文件,每個文件概念上都可以包含一個初始化數(shù)據(jù)的多種測試場景,excel 文件有三部分組成
第一個工作表,這個工作表用來介紹當(dāng)前 excel 文件所測試的業(yè)務(wù),以及包含一個目錄,快捷指向每個場景測試
第二個表示 數(shù)據(jù)庫初始化數(shù)據(jù),可以包含多個表的初始化數(shù)據(jù),也可以在初始化數(shù)據(jù)定義前,定義一些變量,這些變量可以用在初始化數(shù)據(jù),JUnit 代碼里,以及隨后的場景測試?yán)?/p>
第三個表以后的每個工作表都是場景測試表,對應(yīng)了單元測試完畢后,期望的數(shù)據(jù)庫的樣子。通常用紅色背景標(biāo)注在表的列名上,這樣表示只讓 xlsunit 比較關(guān)心的列。同時,也能提醒閱讀者,編寫期望值
xlsunit 基于 Beetl ,完成 Excel 里計算表達(dá)式實現(xiàn)。
