有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java内存数据库,使用内存数据库和maven测试mysql数据库操作API

我必须使用JUnit测试用例测试一些api。实际上,我有一些简单的JDBC数据库连接和API代码,用于从MYSQL数据库检索数据。 但是我需要一个内存数据库来测试代码的正确性。我正在使用maven。 有谁能给我一个适当的建议和步骤吗。如果可能的话,请给出一些JUnit代码示例来测试它

谢谢, RK


共 (3) 个答案

  1. # 1 楼答案

    我想在这里添加一些代码:

        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测试用例的示例,这将非常有帮助

  2. # 2 楼答案

    看看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文档

  3. # 3 楼答案

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

    要从对象生成JSON字符串,可以使用Jacson。因此,从jdbc结果集生成对象,然后生成JSON字符串