ElA*_*rbi 3 spring-test spring-boot spring-boot-test
如何告诉 Spring 只加载 application-test.yml 而不是 application.yml 文件?
我有一个配置类:
@ActiveProfiles("test")
@SpringBootConfiguration
public class MongoTestConfig {
@Autowired
MongoOperations operations;
...
}
Run Code Online (Sandbox Code Playgroud)
和一个测试类:
@RunWith(SpringRunner.class)
@DataMongoTest
@SpringBootTest(classes = MongoTestConfig.class)
public class TagDefinitionRepositoryTest {
...
@Test
....
}
Run Code Online (Sandbox Code Playgroud)
我试图添加:
@TestPropertySource(locations = {"classpath:application-test.yml"})
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
Run Code Online (Sandbox Code Playgroud)
到我的配置类,但它不起作用:Spring 仍然加载 application.yml
我认为你不能告诉 Spring Bootapplication.yml完全忽略。您可以做的是使用测试特定的属性文件覆盖所有不需要的属性。
根据您发布的代码片段, 中的任何属性都application-test.yml将覆盖 中的等效属性application.yml。
Spring Boot 考虑application-test.yml特定于配置文件“test”(它比默认的 application.yml 具有更高的优先级)。不需要注释@TestPropertySource。
但是,如果您想为属性文件选择另一个名称,则可以使用@TestProertySource,因为@TestProperySource参数中指示的文件比其他文件具有更高的优先级。
您可能想查看用于解析属性的Spring Boot外部配置规则
| 归档时间: |
|
| 查看次数: |
4175 次 |
| 最近记录: |