java中void方法的正确单元测试

java中void方法的正确单元测试,java,spring,unit-testing,junit,Java,Spring,Unit Testing,Junit,有没有一种方法可以测试不使用Mockito就不返回任何值的方法? 这是示例方法。我是单元测试新手 public void addMantisData(ArrayList<Mantis> list) { try { connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection .prepareS

有没有一种方法可以测试不使用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) {

            }
        }
    }
}
public void addmantidata(数组列表){
试一试{
connection=dataSource.getConnection();
PreparedStatement PreparedStatement=连接
.prepareStatement(“插入到manties中(ticketId、startDate、endDate、hours、minutes,”+
“employeeId、timeIn、timeOut、dateSubmitted、category、status、timestamp)值(?,,,,,,,,,,,,,,,,,NOW())”;
for(螳螂:列表){
setInt(1,mantis.getTicketId());
setString(2,mantis.getStartDate());
preparedStatement.setString(3,mantis.getEndDate());
setInt(4,mantis.getHours());
preparedStatement.setInt(5,mantis.getMinutes());
setInt(6,mantis.getEmployeeId());
preparedStatement.setString(7,mantis.getStartTime());
setString(8,mantis.getEndTime());
preparedStatement.setString(9,mantis.getDateSubmitted());
preparedStatement.setString(10,mantis.getCategory());
setString(11,mantis.getStatus());
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
preparedStatement.close();
}捕获(SQLE异常){
}最后{
if(连接!=null){
试一试{
connection.close();
}捕获(SQLE异常){
}
}
}
}

如果你不想使用任何“模拟”或“间谍”类(手工制作或从MoCito to),你可以考虑一个“廉价”的数据库,它存储在内存中(或者由临时文件支持)。然后,您的代码可以像实际情况一样通过JDBC发出查询,您的单元测试可以准备数据并检查结果(也可以通过JDBC)


<>请务必阅读.< /p>< P>如果你不想使用任何“模拟”或“间谍”类(手工制作或从MoCito to),你可以考虑一个“廉价”的数据库,它存储在内存中(或者由临时文件支持)。然后,您的代码可以像实际情况一样通过JDBC发出查询,您的单元测试可以准备数据并检查结果(也可以通过JDBC)


请务必阅读。

这看起来更像是与DB的集成测试,而不是纯粹的单元测试。此外,我不确定您要测试的是什么,如果是查询,则需要执行插入,然后尝试从数据库中获取预期值,并使用预期结果断言。确保使用自己的DB实例,并在测试后回滚。这将为您实现这一点,请查看它

这似乎更像是一个与DB的集成测试,然后是一个纯单元测试。此外,我不确定您要测试的是什么,如果是查询,则需要执行插入,然后尝试从数据库中获取预期值,并使用预期结果断言。确保使用自己的DB实例,并在测试后回滚。如果您能做到这一点,请查看

您到底想测试什么?如果这是查询的构建,那么你可以考虑把它带到一个单独的方法并测试它。你想测试什么?如果这是查询的构建,那么你可以考虑把它带到一个单独的方法并测试它。因此,如果我继续测试这个方法,它更多的是一个集成测试,而不仅仅是一个单元测试。我目前得到了一些额外的机会来提高我的软件测试技能。我现在正在开发的测试是为TAD开发人员在实际项目的前期准备的。非常感谢:)我明白了。因此,如果我继续测试这个方法,它更多的是一个集成测试,而不仅仅是一个单元测试。我目前得到了一些额外的机会来提高我的软件测试技能。我现在正在开发的测试是为TAD开发人员在实际项目的前期准备的。非常感谢:)