junit SpringBoot中具有多个测试类的H2数据库

zz2j4svz  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(159)

在我的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.sqldata.sql)按预期正确运行。它创建了一些表,并将一些测试数据放在那里。
现在的问题是,我添加了另一个测试类,并在那里编写了一些测试。现在发生的情况是,第一个测试类成功运行,但当第二个类加载时,它尝试在内存中的H2数据库上再次运行脚本(schema.sqldata.sql)。这显然失败了,因为这些表已经在DB中。
有人能建议我如何实现我想要的行为吗?这样我的脚本应该只运行一次,然后所有的测试类都应该使用同一个数据库。
我的测试类示例如下

@RunWith(SpringRunner.class)
@SpringBootTest()
public class CreateServiceTest {

    @Autowired
    private CreateRepo repo;

    @Test
    public void testCreation(){
        // test code here    
    }
ekqde3dh

ekqde3dh1#

使用spring Boot ,可以为每个测试唯一地定义h2数据库。
数据库服务器的数据库spring.config.name状态
这些测试可以并行运行。
请参阅:https://stackoverflow.com/a/49644877

相关问题