我有Customer类,它连接到db并将数据保存到mysql。我用tomcat7和mysql。我想测试这门课。我有这个方法:
public CustomerData findById(int customerId) throws SQLException {
Connection conn = null;
PreparedStatement stmt = null;
CustomerData customer = null;
try {
String sql = "SELECT id, status, username, email, age, country, city, is_hidden FROM "
+ TABLE + " WHERE id = ?";
conn = DBManager.getConnection();
stmt = conn.prepareStatement(sql);
stmt.setInt(1, customerId);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
customer = new CustomerData(rs.getInt(1), rs.getInt(2),
rs.getString(3), null, rs.getString(4), rs.getInt(5),
String.valueOf(rs.getInt(6)), String.valueOf(rs
.getInt(7)), 0, rs.getInt(8));
}
return customer;
} finally {
closeConnection(conn, stmt);
}
}
我该如何测试?
答案 0 :(得分:3)
你可以像你想的那样测试它,我建议你创建一个单独的数据库,分离生产和测试数据。
你应该查看dallaway中的文章,这绝对是非常棒的。
答案 1 :(得分:1)
您应该使用预先填充的数据进行数据库测试。您可以使用固定的customerId anche调用findById
来检查某些常量的结果。
假设您的测试数据库上有一个名为“Test”registrationDate“10/10/2010”和Id 1的客户
你可以用
CustomerData customer = yourclass.findById(1);
Assert.assertNotNull(customer);
Assert.assertEquals(customer.getId(),1);
Assert.assertEquals(customer.getName(),"Test");
Assert.assertEquals(customer.getRegistrationDate(),"10/10/2010");
其中Assert类可以从Junit o TestNG或您测试框架中获取。