Java HSQLDB独立于单元测试

Java HSQLDB独立于单元测试,java,hibernate,unit-testing,junit,hsqldb,Java,Hibernate,Unit Testing,Junit,Hsqldb,我使用HSQLDB对一组hibernate类和查询进行JUnit单元测试。在每个测试的设置调用中,我使用测试类和测试用例的名称通过hibernate初始化内存中的hsql数据库,以组成内存中db实例的连接字符串。但是在我的第二个测试中,ID序列似乎从第一个测试开始继续。我希望我的测试是绝对独立的,这让我很惊讶。我正在为我的id使用@GeneratedValuestrategy=GenerationType.AUTO。我打算开发和生产数据库是mysql或postgresql,但这在这里并不重要 更

我使用HSQLDB对一组hibernate类和查询进行JUnit单元测试。在每个测试的设置调用中,我使用测试类和测试用例的名称通过hibernate初始化内存中的hsql数据库,以组成内存中db实例的连接字符串。但是在我的第二个测试中,ID序列似乎从第一个测试开始继续。我希望我的测试是绝对独立的,这让我很惊讶。我正在为我的id使用@GeneratedValuestrategy=GenerationType.AUTO。我打算开发和生产数据库是mysql或postgresql,但这在这里并不重要

更新
我尝试了一个较小的测试用例,结果证明我错了。我确实在secodn测试中创建了更多的实体,这导致了一个不同的id。我的糟糕透顶

HSQLDB内存数据库可能只有在应用程序终止后才会被删除


您可以在每个测试类之前创建一个事务,并在测试类完成时回滚它。

这是意外行为。您可以发布用于初始化数据库连接的安装程序中的代码吗?我尝试了一个较小的测试用例,结果证明我错了。我确实在secodn测试中创建了更多的实体,这导致了一个不同的id。我的糟糕透顶!实际上,您的第二个测试不应该依赖于生成的ID的实际值。该测试不应该对其环境做出任何隐式假设。我知道,我不是特别声明生成的ID,我是在调查一个问题,就好像该ID是一个症状一样。