2

我必须使用 JUnit 测试用例测试一些 api。实际上我有一些简单的 JDBC 数据库连接和 API 代码来从 MYSQL 数据库中检索数据。但是我需要一个内存数据库来测试代码的正确性。我正在使用 Maven。任何机构都可以通过步骤给我适​​当的建议。如果可能,请提供一些示例 JUnit 代码来测试它。

谢谢, RK

4

3 回答 3

1

看看 DBUnit - 他们的方法在http://dbunit.sourceforge.net/howto.html

它完全符合您的要求。

DBunit 站点有很多示例。我要做的是:

在 @Before 方法中设置 d/b,这样每个测试都会得到一个干净的夹具。@Before 方法的一个例子是:

Connection conn = dataSource.getConnection();
        try {
            IDatabaseConnection connection = new DatabaseConnection(conn);
            DatabaseConfig config = connection.getConfig();
            config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,
                    new HsqldbDataTypeFactory());
            DatabaseOperation.CLEAN_INSERT.execute(connection, loadDutyData());
            DatabaseOperation.CLEAN_INSERT
                    .execute(connection, loadHelperData());
        } finally {
            DataSourceUtils.releaseConnection(conn, dataSource);
        }

其中 loadHelperData() 方法执行以下操作:

DataFileLoader loader = new FlatXmlDataFileLoader();
        IDataSet ds = loader.load(TEST_DATA_FILE_HELPER);
        return ds;

load 方法只需要一个表示数据库的 xml 文件。有关更多信息,请参阅 DBUnit 文档。

于 2013-08-19T15:00:45.243 回答
1

您可以使用与内存数据库 100% JDBC API 兼容的HSQLDB

要从对象制作 JSON 字符串,您可以使用Jacson。所以从 jdbc 结果集中创建你的对象然后是 JSON 字符串。

于 2013-08-19T19:07:47.433 回答
0

我喜欢在这里添加一些代码:

    public JSONObject getResultById(int id) {
    Connection conn = null;
    Statement stmt = null;
    String sqlQuery = "select * from " + table + " where id='"
            + id + "'";
    try {
        //get the connection
        conn = DBConnection.getConnection();
        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(sqlQuery);
        //return result set in JSON format
        return getJsonString(rs);

    } catch (Exception ex) {
        return null;
    } finally {
        try {
            if (conn != null)
                conn.close();
            if (stmt != null)
                stmt.close();
        } catch (Exception ex) {
            return null;
        }
    }
}

为了测试它,测试它的最佳方法是什么。我有人给出了一些示例 JUnit 测试用例,那么它将非常有帮助

于 2013-08-20T09:10:05.550 回答