JMockit:如何为依赖持久层的类编写单元测试?

时间:2018-11-30 17:48:33

标签: java unit-testing jmockit

我的要求是编写围绕逻辑的单元测试,该逻辑围绕调用持久层的bean进行。这些调用主要是StoredProcs,目的不是要验证存储的procs是否正确,而是要验证类中的逻辑是否正确。

就此而言,我想以某种方式模拟对持久层的调用,但是还没有找到一种简便的方法来做到这一点。我怀疑这是因为它实际上不是理想的/推荐的方法(持久性层类在理论上应该使用集成测试进行测试)。

但是,在这种特殊情况下,我很乐意模拟持久层。给出以下代码段:

public boolean isUserDataPresent(String username, PersistenceManager pm) throws IzoneBusinessException {
    // call the last date the data was refreshed
    LastOperation lastOp = getLastOperation(username, pm);
    return username != null && lastOp!= null && lastOperation.getActiveMergeDate() != null;
}

其中getLastOperation()是一个私有方法,它通过对PersistenceManager的调用来访问数据库并返回一个私有内部对象LastOperation,如何安全有效地测试此方法?

private LastOperation getLastOperation(String username, PersistenceManager pm)  {

    LastOperation lastOperation = null;
        try (CallableStatement cstmt = pm.getConnection().prepareCall("{call GetLastOperation(?)}")) {
            cstmt.setString(1, username);
            if (cstmt.execute()) {
                ResultSet resultSet = cstmt.getResultSet();
                if (resultSet.next()) {
                    lastOperation= new LastOperation(resultSet.getTimestamp(1));
                }
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    return lastOperation;
}

0 个答案:

没有答案