【发布时间】:2020-02-07 02:32:41
【问题描述】:
如何将 application-test.properties 中的属性加载到 Spring Boot 中的测试类中?我做错了什么但无法弄清楚?
我可以从 application.properties 中获取下面给出的配置类的属性
package org.vinodh.testing;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.Data;
@Configuration
@ConfigurationProperties(prefix = "caching")
@Data
public class CachingConfig {
@Value("${caching.name}")
private String name;
@Data
public static class CacheSpec {
private int minutesToExpire;
private int maximumSize;
}
private Map<String, CacheSpec> specs;
@Bean
public void test() {
System.out.println(name);
System.out.println(specs);
}
}
但是当我尝试在测试类中做同样的事情时,我会得到空值,请参见下面的代码。如何让我的测试类打印属性文件中的值?
package org.vinodh.testing;
import java.util.Map;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;
import lombok.Data;
@RunWith(SpringRunner.class)
@ContextConfiguration
@ConfigurationProperties(prefix = "caching")
@TestPropertySource("/application-test.properties")
@Data
public class CachingConfigTest {
@Value("${caching.name}")
private String name;
@Data
public static class CacheSpec {
private int minutesToExpire;
private int maximumSize;
}
private Map<String, CacheSpec> specs;
@Test
public void test() {
System.out.println(name);
System.out.println(specs);
}
}
application.properties
caching.specs.test.minutesToExpire=10
caching.specs.test.maximumSize=10
caching.name=Vinodh
application-test.properties
caching.specs.test.minutesToExpire=10
caching.specs.test.maximumSize=10
caching.name=Vinodh
【问题讨论】:
-
添加
@ActiveProfile("test")。 -
属性的拼写应该像
caching.specs.test.minutes-to-expire=10和caching.specs.test.maximum-size=5
标签: java spring-boot