最佳答案
我有一个Spring-Boot应用程序,其中默认属性设置在类路径(src/main/resources/application.properties)中的application.properties
文件中。
我想用test.properties
文件(src/test/resources/test.properties)中声明的属性覆盖我的JUnit测试中的一些默认设置
我通常为我的Junit测试有一个专用的配置类,例如。
package foo.bar.test;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
}
我最初认为在TestConfig类中使用@PropertySource("classpath:test.properties")
可以达到目的,但这些属性不会覆盖应用程序。属性设置(参见Spring-Boot参考Doc - 23. 外部化配置)。
然后我尝试在调用测试时使用-Dspring.config.location=classpath:test.properties
。这是成功的——但是我不想为每次测试执行都设置这个系统属性。因此我把它放在代码中
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
不幸的是,这次也没有成功。
必须有一个简单的解决方案,如何覆盖application.properties
设置在JUnit测试与test.properties
,我必须忽略。