与db建立连接的Java测试类

时间:2011-11-26 10:44:43

标签: java unit-testing java-ee junit

我有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);
    }
}

我该如何测试?

2 个答案:

答案 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或您测试框架中获取。