【发布时间】:2021-12-28 15:17:28
【问题描述】:
我们希望在运行测试时将 src/main/resources/application.properties 与其他默认属性合并,而这些默认属性又应包含在通过 Spring Boot 应用程序中的特定配置文件激活的其他(测试)属性文件中。
在 Spring Boot 2.4 之前,通过在 src/test/resources/application-default.properties 中包含所有常见的测试属性来保持事物干燥,这非常有效。然后这些会被 Spring [1] 自动与来自 src/main/resources/application.properties 的那些合并。这使我们能够拥有自己的一组默认属性,而无需通过测试来指定 @ActiveProfiles("default")。
其他(测试)配置文件可以拥有自己的应用程序-spring.profiles.include=default,然后进一步扩展默认值。
在 Spring Boot 2.4 中,我正在为新的“规则”而苦苦挣扎:
-
我无法再从 application-
.properties 加载 application-default.properties,因为在非特定配置文件 [2] 中不再允许使用 spring.profiles.include。 -
我不想介绍
src/test/resources/application.properties,因为我不想重复src/main/resources/application.properties的所有内容。此外,我不想在应用程序的属性中加载任何激活任何与测试相关的配置文件。
看起来一种解决方案可能是将spring.profiles.include=default 显式添加到src/main/resources/application.properties 以强制应用程序包含具有默认属性的属性文件,这在运行实际应用程序时将像以前一样工作,但请考虑src/test/resources/application-default.properties运行测试时。
这是要走的路还是有更聪明的解决方案来解决这个问题并仍然保持属性没有冗余?
【问题讨论】:
标签: java spring spring-boot spring-test