出于好奇......我是 Spring Boot 的新手,我正在做一些集成测试,使用@SpringBootTest
测试类的更新注释。
在常规代码(非测试代码)中,应用程序有一个自定义初始化程序,允许它加载外部 YAML 文件。
我想在测试中使用它,所以我有一个@ContextConfiguration
覆盖初始化器的注释,并且可能因为我添加了这个注释,它搞砸了@SpringBootTest
正在做的任何巫术,所以我需要添加 classes 参数来给它mainSpringApplication
以便在测试期间应用程序上下文可用并且Autowired
可以找到 bean。
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = ExamProcessorApplication.class, initializers = YamlFileApplicationContextInitializer.class)
@SpringBootTest
@Transactional
public class AssessmentRepositoryImplIT {
...
}
我的问题是 - 提供ExamProcessorApplication.class
(主 SpringBootApplication)与默认行为在自动发现期间 @ContextConfiguration
的作用相同 - 或多或少?@SpringBootTest
我和一位同事正在讨论这个问题,我的想法是我的方式实际上是实例化主应用程序对象,但@SpringBootTest
不是。只是试图了解引擎盖下发生了什么。