gpt4 book ai didi

java - Junit 与 HSQL/H2 一起使用,无需 Spring/Hibernate

转载 作者:行者123 更新时间:2023-12-02 13:24:06 24 4
gpt4 key购买 nike

我正在尝试使用 H2 或 HSQL 进行单元测试。但我的应用程序不是spring和hibernate的。似乎大多数引用资料都只存在于内存数据库中用于 HSQL/H2 的 spring 和 hibernate 进行单元测试。

有人可以指出仅 hsql/h2 与 junit 一起使用的正确引用吗?感谢您的时间。

最佳答案

我通常会做这样的事情:

在 @Before 方法中,我建立了与内存数据库的连接,如下所示:

@Before
public void setup()
{
this.dbConnection = DriverManager.getConnection("jdbc:hsqldb:mem:testcase;shutdown=true", "sa", null);
}

连接存储在实例变量中,因此它可用于每个测试。

然后,如果所有测试共享相同的表,我也会在 setup() 方法中创建这些表,否则每个测试都会创建自己的表:

@Test
public void foo()
{
Statement stmt = this.dbConnection.createStatement();
stmt.execute("create table foo (id integer)");
this.dbConnection.commit();
... now run the test
}

在 @After 方法中,我简单地关闭连接,这意味着内存数据库被删除,下一个测试将使用干净的版本运行:

@After
public void tearDown()
throws Exception
{
dbConnection.disconnect();
}
有时我确实需要在真实的数据库服务器上运行单元测试(您无法使用 HSQLDB 或 H2 测试 Postgres 或 Oracle 特定功能)。在这种情况下,我只为每个测试类建立一次连接,而不是为每个测试方法建立一次连接。然后我有方法删除所有对象以清理架构。

这一切都可以放入一个小实用程序类中,以避免一些样板代码。如果您想以某种方式外部化测试数据,Apache 的 DbUtils 也可以让生活变得更轻松,DbUnit 也可以。

关于java - Junit 与 HSQL/H2 一起使用,无需 Spring/Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17311571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com