【发布时间】:2018-12-14 10:59:07
【问题描述】:
有几个 web spring boot java 应用程序。我需要为集成测试准备几个组件。我的任务是模拟所有外部行为,例如其他项目的组件、数据库调用等。我使用 spring 框架中的@Profileannotation 找到了解决方案。这是example。我可以简单地创建新配置文件并为每个配置文件声明两个 bean 实现:一个用于实际使用,用于生产,另一个用于集成测试,用于存根。它看起来像这样:
@Profile("PROD")
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
@Profile("MOCK")
@Configuration
@EnableWebSecurity
public class SecurityMockConfig extends WebSecurityConfigurerAdapter {
}
但我对这个设计有疑问。对我来说它看起来有点乱。这个解决方案是否被我认为可以接受我的任务?
【问题讨论】:
-
你能定义你所说的“集成测试”是什么意思吗?通常,这包括实际的真实数据库等,但不包括生产实例。
-
通过集成测试,我的意思是所有组件(如果你愿意的话,模块)将被一起测试,以发现它们交互中的错误和错误。一个模块(微服务)与其他模块交互,并且必须进行测试。所以我需要为模块编写存根、模拟,这样就不会有外部数据源的依赖关系可以及时改变。这样,数据将是相同的,测试结果将是可预测的。
标签: java spring spring-boot integration-testing stubbing