ui自动化测试数据复原遇到的坑——1、hibernate输出完整sql
阅读原文时间:2023年07月12日阅读:2

公司老项目使用SSH+informix+weblogic+IE开发,我们要做ui自动化测试,其中的测试数据复原,我打算通过hibernate输出sql,然后把插入、更新的sql改为delete或update(大部分用delete就行,具体看sql),然后在每次自动化测试任务开始前执行这些sql。部署好项目到本地后,修改配置,但发现hibernate输出的只有预编译sql和对应的参数,这样大大增加了修改sql的难度。

查看代码,发现项目中使用p6spy框架拦截sql语句,但默认只能在spy.properties配置下图的红圈部分,而且不能自定义(我不需要输出select语句和resultset)。

 

在spy.properties如上图添加一个自定义的类,该类实现P6logger接口,实现logSQL方法

@Override  
public void logSQL(int connectionId, String now, long elapsed, String category,  
                   String prepared, String sql) {  
    if (!"resultset".equals(category)){  
        // 按指定模式在字符串查找  
        String regex = "^update.\*|^insert.\*|^delete.\*";  
        Pattern pattern = Pattern.compile(regex);  
        Matcher matcher = pattern.matcher(sql);  
        if (matcher.find()) {  
            System.out.println("【SQL】" + sql);  
        }  
    }  
}