junit 测试在结尾处返回null的方法

xxb16uws  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(159)
public class CustomerDAO implements Dao<Customer> {

public static final Logger LOGGER = LogManager.getLogger();

    @Override
    public Customer modelFromResultSet(ResultSet resultSet) throws SQLException {
        Long id = resultSet.getLong("id");
        String firstName = resultSet.getString("firstName");
        String surname = resultSet.getString("surname");
        return new Customer(id, firstName, surname);
    }
    @Override
    public Customer create(Customer customer) {
        try (Connection connection = DBUtils.getInstance().getConnection();
                PreparedStatement statement = connection
                        .prepareStatement("INSERT INTO customers(firstName, surname) VALUES (?, ?)");) {
            statement.setString(1, customer.getFirstName());
            statement.setString(2, customer.getSurname());
            statement.executeUpdate();
            return readLatest();
        } catch (Exception e) {
            LOGGER.debug(e);
            LOGGER.error(e.getMessage());
        }
        return null;
    }
}

上面的create方法是我正在尝试测试的方法。

public class CustomerDAOTest {

    private final CustomerDAO DAO = new CustomerDAO();

    @Test
    public void testCreate() {
        final Customer created = new Customer(2L, "chris", "perrins");
        assertEquals(created, DAO.create(created));
    }
}

这是我写的测试,但是很明显create方法会返回null,而创建的变量不会,因此测试失败。我能做些什么来解决这个问题呢?原始方法不是我自己的代码,它是一个学习练习,所以理想情况下我不想对它做太多的修改,如果有可能的话。

kq4fsx7k

kq4fsx7k1#

您可以使用assertNull:
assertNull(Dao.create(created));

相关问题