覆盖 Junit 测试中的默认 Spring-Boot 应用程序属性设置
我有一个Spring-Boot应用程序,其中默认属性在类路径(src/main/resources/application.properties)的文件中设置。application.properties
我想用文件中声明的属性覆盖JUnit测试中的一些默认设置(src/test/resources/test.properties)test.properties
我通常有一个专用的配置类用于我的 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 类中使用可以解决问题,但这些属性不会覆盖 application.properties 设置(请参阅 Spring-Boot 参考文档 - 23。外部化配置)。@PropertySource("classpath:test.properties")
然后我尝试在调用测试时使用。这是成功的 - 但我不想为每个测试执行设置此系统属性。因此,我将其放在代码中-Dspring.config.location=classpath:test.properties
@Configuration
@Import(CoreConfig.class)
@EnableAutoConfiguration
public class TestConfig {
static {
System.setProperty("spring.config.location", "classpath:test.properties");
}
}
不幸的是,这又没有成功。
关于如何覆盖JUnit测试中的设置,必须有一个简单的解决方案,我一定忽略了它。application.properties
test.properties