如何使用HSQL的setup数据源进行junit测试

时间:2012-06-06 14:52:26

标签: java unit-testing junit hsqldb

我编写了一个存储库类,它将javax.sql.DataSource作为构造函数arg,并对其进行了一些基本的CRUD操作。我现在想为它编写junit测试。我想在这些测试中使用HSQL作为我的数据库,但我不确定如何按照我想要的方式设置数据库。使用Spring应用程序,我在我的应用程序上下文中添加了类似的内容进行测试:

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:mySQLForDB.sql"/>
</jdbc:embedded-database>

但是,我想要测试的不是Spring应用程序。无论如何在代码中设置数据源并从sql文件设置数据库?基本上与Spring在<jdbc:embedded-database>标签上的功能相同的东西。

1 个答案:

答案 0 :(得分:1)

你会考虑尝试使用h2吗?

public static void main(String[] args) throws ClassNotFoundException,
        SQLException {
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:mem:mytestdb",
            "sa", "");
    Statement st = conn.createStatement();
    st.execute("create table foo (id integer)");
    st.execute("insert into foo (id) values (1)");
    ResultSet rs = st.executeQuery("select * from foo");
    while (rs.next()) {
        int result = rs.getInt("id");
        System.out.println(result);
    }
    conn.close();
}

HSQL有相同的方法,但没有尝试过。 看this link

我希望这会有所帮助。