有没有办法在没有使用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) {
}
}
}
}
我赞美帮助:)
答案 0 :(得分:3)
这似乎更像是与DB进行集成测试然后是纯单元测试。此外,我不确定您要测试的是什么,如果是查询,则需要执行插入,然后尝试从数据库和assert
获得预期值并获得预期结果。确保使用自己的数据库实例并在测试后回滚。 DBUnit会让你发生这种情况,请查看
答案 1 :(得分:2)
如果您不想使用任何“模拟”或“间谍”类(手工制作或来自Mockito),您可以考虑一个存在于内存中(或由临时文件支持)的“廉价”数据库。然后你的代码可以像真实的那样通过JDBC发出查询,你的单元测试可以准备数据并检查结果(也可以通过JDBC)。