在我的SpringBoot应用程序中,我在/src/test/java
中有一个测试类。
对于测试(单元测试)。我想使用内存中的H2数据库。我有以下数据库URL
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;INIT=runscript from 'classpath:/schema.sql'\\;runscript from 'classpath:/data.sql'
因此,当我运行测试时,数据库被创建,脚本(schema.sql
和data.sql
)按预期正确运行。它创建了一些表,并将一些测试数据放在那里。
现在的问题是,我添加了另一个测试类,并在那里编写了一些测试。现在发生的情况是,第一个测试类成功运行,但当第二个类加载时,它尝试在内存中的H2数据库上再次运行脚本(schema.sql
和data.sql
)。这显然失败了,因为这些表已经在DB中。
有人能建议我如何实现我想要的行为吗?这样我的脚本应该只运行一次,然后所有的测试类都应该使用同一个数据库。
我的测试类示例如下
@RunWith(SpringRunner.class)
@SpringBootTest()
public class CreateServiceTest {
@Autowired
private CreateRepo repo;
@Test
public void testCreation(){
// test code here
}
1条答案
按热度按时间ekqde3dh1#
使用spring Boot ,可以为每个测试唯一地定义h2数据库。
数据库服务器的数据库spring.config.name状态
这些测试可以并行运行。
请参阅:https://stackoverflow.com/a/49644877