gpt4 book ai didi

Spring Boot测试最小测试片或者手动配置

转载 作者:行者123 更新时间:2023-12-02 00:02:50 25 4
gpt4 key购买 nike

我正在运行许多不同的 SpringBoot 测试。到目前为止auto configuration slices真的很有帮助,特别是与 @MockBean 结合使用。

但在我当前的测试中,没有这样的切片适合,并且使用 @SpringBootTest 启动完整的上下文太慢。

有没有办法手动设置要启动的对象树的尖端,并从那里 spring Autowiring 所有需要的 bean?或者有没有办法手动设置所有需要的bean?

在我的具体情况下,我想测试 MapStruct 生成的映射器(使用 componentModel = "spring"),该映射器使用另外两个映射器,每个映射器注入(inject)一个服务来完成其工作。

服务通过@MockBean提供:

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

@Autowired
private PRUMapper mapper;

@MockBean
private TradingPartnerService tradingPartnerService;

@MockBean
private ProductHierarchyService productHierarchyService;

@Test
public void mapForthAndBack(){
//works but takes ages to boot
}

}

我无法在映射器(用于服务)上使用构造函数注入(inject),因为 MapStruct 不会生成正确的实现。

如何获取仅包含所需 bean 的 Spring-Context?

最佳答案

我通过显式声明使用的所有实现找到了一种方法:

@SpringBootTest(classes = {ProductResponsibleUnitMapperImpl.class, LegalEntityMapperImpl.class, ProductHierarchyMapperImpl.class}) 

对于更复杂的设置,声明生成的类会很麻烦而且很危险。

我仍在寻找一种更好、更简洁的方法来让 Spring 决定需要哪些类。应该可以手动设置类并让 Spring 决定需要哪些类并实例化。

关于Spring Boot测试最小测试片或者手动配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331926/

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