gpt4 book ai didi

java - SpringBootTest - 只创建必要的bean

转载 作者:行者123 更新时间:2023-12-02 10:35:38 30 4
gpt4 key购买 nike

我有一个类似于以下的代码:

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

@Autowired
private SomeRepository repository;

@Autowired
private SomeSearcher someSearcher;


@Test
public void test(){
someSearcher.search(repository);
}
}

它有效 - 但也可以在与 2 个创建的 bean 相同的上下文中创建所有 bean。这可能需要很长时间(并且我每次构建/部署都运行此测试)。

所以,我想找到一种方法让测试只加载测试所需的bean。在此示例中,它只是repository 和 someSearcher

我知道我可以使用 @BeanMock 为 bean 提供替代实现,但仍会创建 bean 的实际实现(尽管未使用)。

有什么建议吗?

最佳答案

您可以使用@ContextConfiguration而不是 @SpringBootTest 为特定类创建自定义 Spring 上下文。 Spring Boot 通过为特定用例设计的类进一步简化了这一点,例如@WebMvcTest@DataJdbcTest

但是这种方法有两个主要缺点:

  1. 您在这个新的有限上下文中实际测试什么?绝对不是生产应用程序,因为您没有启动整个 Spring 上下文。这可能会导致测试遗漏错误,例如bean 覆盖问题可能不会被发现。

  2. SpringRunner 将尝试在可能的情况下在测试之间重用 Spring 上下文。当您有多个测试时,启动一个大上下文并在所有测试中共享它可能会更快。

关于java - SpringBootTest - 只创建必要的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317227/

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