gpt4 book ai didi

java - 使用内存数据库在 Spring Boot 中进行集成测试

转载 作者:行者123 更新时间:2023-12-01 07:17:16 25 4
gpt4 key购买 nike

我正在使用内存数据库(H2)进行集成测试,以便我可以使用已知值填充存储库,使用存储库初始化服务实现。这是我的测试类

@RunWith(SpringRunner.class)
@TestPropertySource("classpath:application-test.properties")
@SpringBootTest
public class ManufacturerServiceH2ImplTest {

@Autowired
private ManufacturerRepository manufacturerRepository;

@Autowired
ManufacturerServiceImpl manufacturerServiceImpl;


@Test
public void testManufacturerCreate() throws Exception {

//Create Manufacturer
Manufacturer manufacturer = new Manufacturer();
manufacturer.setManufacturerId("SSS");
manufacturer.setManufacturerName("WWW");

//Save Manufacturer in Inmemory
Manufacturer manufacturerInMemory = manufacturerRepository.save(manufacturer);

//Service Implementation
StResponse createManufacturer = manufacturerServiceImpl.createManufacturer(manufacturer);

//Compare the result

}

}

服务实现应该使用内存数据库中保存的数据并执行少量业务验证。我在这里面临的问题是,服务实现实际上正在考虑ManufacturerRepository实例,它指向实际的数据库(在本例中为postgres),而不是指向内存数据库。有关如何将ManufacturerRepository实例注入(inject)manufacturerServiceImpl服务实现(指向内存数据库)的任何帮助

最佳答案

在集成测试运行时使用 Spring-Profiles 使用 H2,否则使用另一个数据库。

application-test.{yml|properties} 添加到资源中,并将 @ActiveProfiles("test") 添加到您的类中。

应用程序测试.yml

spring.profiles.active: test

spring:
jpa:
database: h2
datasource:
url: jdbc:h2:mem:AZ
driver-class-name: org.h2.Driver
h2:
console:
enabled: true

关于java - 使用内存数据库在 Spring Boot 中进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com