Java JUnit、H2、JaxRS、测试方法之间的内存数据库
如何在测试方法之间删除、回滚或断开H2数据库的连接 下面是我的hibernate测试配置:Java JUnit、H2、JaxRS、测试方法之间的内存数据库,java,hibernate,junit,jersey,jax-rs,Java,Hibernate,Junit,Jersey,Jax Rs,如何在测试方法之间删除、回滚或断开H2数据库的连接 下面是我的hibernate测试配置: <property name="connection.driver_class">org.h2.Driver</property> <property name="connection.url"> jdbc:h2:mem:test;DB_CLOSE_DELAY=0;INIT=RUNSCRIPT FROM './h2-ext/add_to_
<property name="connection.driver_class">org.h2.Driver</property>
<property name="connection.url">
jdbc:h2:mem:test;DB_CLOSE_DELAY=0;INIT=RUNSCRIPT FROM './h2-ext/add_to_date.sql'
</property>
<property name="hbm2ddl.auto">create</property>
似乎应该有一种简单的方法来执行这样的集成测试
也许我可以使用某种类型的事务性注释?但是,我想知道如何使用相对普通的jersey+JUnit来实现这一点
Jersey是2.12,Java1.7,H2是1.4.181,JUnit是4.11
版本可以协商。我正在使用一个SQL文件来处理(重新)初始化。对于这样的文件,您可以使用:
import org.h2.tools.RunScript;
@Autowired
private DataSource dataSource; // get your DataSource somehow
@Before
public void setup() {
RunScript.execute(dataSource.getConnection(), new FileReader("src/test/resources/testdb/data.sql");
...
每次测试,数据库都会恢复正常
但不要并行运行测试
另一种可能更好的方法:
- 编写测试,以便数据库的状态无关紧要,并且每个测试可以与其他测试和自身并行运行。然后您可以使用这些测试进行负载测试李>
shutdown
,会发生什么情况?这是一个内存数据库,我想应该可以清除它。
import org.h2.tools.RunScript;
@Autowired
private DataSource dataSource; // get your DataSource somehow
@Before
public void setup() {
RunScript.execute(dataSource.getConnection(), new FileReader("src/test/resources/testdb/data.sql");
...