我在看一个关于使用数据库的培训项目。那里的主数据库是mysql,h2用于测试,下面是一个教程:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
在application.properties文件中指定了以下设置:
jdbc:
driverClassName: org.h2.Driver
pool.size.max: 10
statement.timeout: 0
url: jdbc:h2:mem:mytestdb;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
测试通过,即数据输入数据库,经过检查,一切正常。
但是当我在调试模式下运行测试时,在测试结束时放置一个断点并尝试连接到数据库,它是空的,甚至没有表,更不用说数据了。为了连接,我使用dbever。在连接字符串中,我写jdbc:h2:mem:mytestdb;db\u close\u on\u exit=false(我试过了)jdbc:h2:tcp://localhost:9092/mem:mytestdb). 检查连接过程,写入一切正常,连接已建立。有什么问题吗?
我尝试写入文件,而不是url:jdbc:h2:mem:ump-currencymanager; db\u close\u on\u exit=false我写了:url:jdbc:h2:file:c:\logs\logdb文件是在我用dbever打开它时创建的,甚至表也在那里,但是表本身没有数据。
关于这一主题的类似问题也得到了研究。
@Test
public void createPeopleTable() throws SQLException {
int count = peopleService.count();
assertEquals(0, count);
peopleService.createPeopleTable();
count = peopleService.count();
assertEquals(34, count);
}
1条答案
按热度按时间uajslkp61#
您已经知道如何从内存数据库切换到基于文件的存储。
试着早点设置断点。也许在测试结束时,有一些清理会删除所有表?或者可能有一个拆卸的方法做清理?
另一个想法:在测试过程中的某个地方写一个备份: