【问题标题】:different auto-configuration for prod and test?产品和测试的不同自动配置?
【发布时间】:2020-06-13 09:08:03
【问题描述】:

我正在为 Spring Boot 开发一个库。目前,它有一些用于生产的自动配置。

现在,我还想(作为一个库)为单元测试提供模拟类,而不是常规类。

我知道 Spring Batch 通过使用 @SpringBatchTest 标记测试类来做到这一点。

我怎样才能实现类似的行为?

【问题讨论】:

  • ConditionalOn 类可以帮助您实现这种行为。
  • 是的,我试图了解正确的类是否是ConditionalOnClass
  • 其中有很多用于不同的用例。

标签: java spring spring-boot unit-testing dependency-injection


【解决方案1】:

模拟类或测试支持类应在单独的库中提供。这是春季团队遵循的方法。 将测试支持类与生产类打包在一起是反模式,应该避免。

【讨论】:

  • 好的。假设我这样做。如何实现我描述的行为?
  • 您将提供类似于spring-boot-test-autoconfigure 对所有层所做的测试配置。请参阅 spring-boot-test-autoconfigure 模块中的 spring.factories。另一种选择是注册@MockBean 或@SpyBean 并让用户配置他们的行为。
  • 但是 Spring 将为我的@Bean 提供两个候选人。如何解决这个问题?我的@ConditionalOn... 是什么?
  • 没有条件。 @TestXXX 注释使用此特定配置配置您的应用程序。其他不适用。例如,看看他们如何配置他们的@JdbcTest
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 2023-03-03
  • 2015-02-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多