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,而创建的变量不会,因此测试失败。我能做些什么来解决这个问题呢?原始方法不是我自己的代码,它是一个学习练习,所以理想情况下我不想对它做太多的修改,如果有可能的话。
1条答案
按热度按时间kq4fsx7k1#
您可以使用assertNull:
assertNull(Dao.create(created));