我有我的Spring Boot主类:
@SpringBootApplication
@PropertySource("file:/my/file/properties")
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
//main method
}
我正在从外部文件中读取属性(使用@PropertySource
)。现在,我有一个集成测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes= Application.class)
@WebIntegrationTest
@TestPropertySource("file:/my/test/file/properties") // <---
public class MyTest {
//some tests
}
我需要使用另一个外部属性文件,该文件与@PropertySource
类中的Application
中指示的不同。出于这个原因,我添加了@TestPropertySource
,但似乎此注释不会覆盖@PropertySource
。
我该怎么办?
提前致谢。
答案 0 :(得分:9)
以这种方式使用:
@TestPropertySource(locations = "classpath:test.properties")
并将测试属性文件放入src/test/resources
答案 1 :(得分:0)
在Java8中你可以重复&#34;注释如:
@PropertySource(value = "file:./src/main/resources/mydefault.properties")
@PropertySource(value = "file:./src/test/resources/override.properties", ignoreResourceNotFound = true)
这样,后者会覆盖第一个文件中的属性(如果可用)。