0

有没有办法在不使用 Mockito 的情况下测试不返回任何值的方法?这是示例方法。我是单元测试的新手。

public void addMantisData(ArrayList<Mantis> list) {

    try {
        connection = dataSource.getConnection();

        PreparedStatement preparedStatement = connection
                .prepareStatement("INSERT INTO mantises (ticketId, startDate, endDate, hours, minutes, " +
                        "employeeId, timeIn, timeOut, dateSubmitted, category, status, timestamp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");

        for (Mantis mantis : list) {
            preparedStatement.setInt(1, mantis.getTicketId());
            preparedStatement.setString(2, mantis.getStartDate());
            preparedStatement.setString(3, mantis.getEndDate());
            preparedStatement.setInt(4, mantis.getHours());
            preparedStatement.setInt(5, mantis.getMinutes());
            preparedStatement.setInt(6, mantis.getEmployeeId());
            preparedStatement.setString(7, mantis.getStartTime());
            preparedStatement.setString(8, mantis.getEndTime());
            preparedStatement.setString(9, mantis.getDateSubmitted());
            preparedStatement.setString(10, mantis.getCategory());
            preparedStatement.setString(11, mantis.getStatus());
            preparedStatement.addBatch();
        }

        preparedStatement.executeBatch();
        preparedStatement.close();

    } catch (SQLException e) {

    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {

            }
        }
    }
}

我感谢您的帮助:)

4

2 回答 2

3

这似乎更像是与数据库的集成测试,然后是纯单元测试。我也不确定您要测试的是什么,如果它是您需要执行插入的查询,然后尝试从数据库中获取预期值并assert获得预期结果。确保您使用自己的数据库实例并在测试后回滚。DBUnit将为您实现这一点,检查一下

于 2013-05-07T07:13:05.423 回答
2

如果您不想使用任何“模拟”或“间谍”类(手工制作或来自 Mockito),您可以考虑使用内存中的“廉价”数据库(或由临时文件支持)。然后你的代码可以像真实的东西一样通过 JDBC 发出查询,你的单元测试可以准备数据和检查结果(也可以通过 JDBC)。

请务必阅读此类似问题的答案

于 2013-05-07T07:10:08.200 回答