我正在尝试使用H2或HSQL进行单元测试。但我的应用程序不是春天和冬眠。看起来大部分的参考资料都是针对单元测试的内存数据库中的HSQL/H2的spring和hibernate。Junit with HSQL/H2 without Spring/Hibernate
有人能指出一个正确的参考,其中只有hsql/h2与junit一起使用吗?欣赏你的时间。
我正在尝试使用H2或HSQL进行单元测试。但我的应用程序不是春天和冬眠。看起来大部分的参考资料都是针对单元测试的内存数据库中的HSQL/H2的spring和hibernate。Junit with HSQL/H2 without Spring/Hibernate
有人能指出一个正确的参考,其中只有hsql/h2与junit一起使用吗?欣赏你的时间。
我后容易做这样的事情:
在@Before方法我建立一个内存数据库的连接,这样的事情:
@Before
public void setup()
{
this.dbConnection = DriverManager.getConnection("jdbc:hsqldb:mem:testcase;shutdown=true", "sa", null);
}
连接存储在一个实例变量,所以它适用于每个测试。
那么,如果所有测试共享相同的表,我也创建这些设置()方法中,否则每个测试创建自己的表:
@Test
public void foo()
{
Statement stmt = this.dbConnection.createStatement();
stmt.execute("create table foo (id integer)");
this.dbConnection.commit();
... now run the test
}
在@After方法我SIMPLIC关闭连接这指的内存数据库已被清除,并下试用干净的版本上运行:
@After
public void tearDown()
throws Exception
{
dbConnection.disconnect();
}
有时候我需要运行unitt的测试agains一个真正的数据库服务器(你不能测试的Postgres或Oracle特定功能使用HSQLDB或H2)。在这种情况下,我只为每个Testclass建立连接,而不是为每个测试方法建立一次连接。然后我有方法删除所有对象以清理模式。
这可以放在一个小实用程序类,以避免一些样板代码。如果你想以某种方式外部化测试数据,Apache的DbUtils也可以让DbUnit变得更容易。
我知道我有点迟到了:-)
我有同样的问题而回,并创建了使用@rule机制设置的内存数据库的JUnit测试JUnit的整合。我发现它是测试我的数据库集成代码的一个真正简单而好的方法。反馈是值得欢迎的。
您使用的数据库API是什么? JDBC? –