我有一个Spring Boot应用程序,它有一些配置属性。我试图为某些组件编写测试,并希望从test.properties
文件加载配置属性。我无法让它发挥作用。
这是我的代码:
test.properties
文件(在src / test / resources下):
vehicleSequence.propagationTreeMaxSize=10000
配置属性类:
package com.acme.foo.vehiclesequence.config;
import javax.validation.constraints.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = VehicleSequenceConfigurationProperties.PREFIX)
public class VehicleSequenceConfigurationProperties {
static final String PREFIX = "vehicleSequence";
@NotNull
private Integer propagationTreeMaxSize;
public Integer getPropagationTreeMaxSize() {
return propagationTreeMaxSize;
}
public void setPropagationTreeMaxSize(Integer propagationTreeMaxSize) {
this.propagationTreeMaxSize = propagationTreeMaxSize;
}
}
我的测试:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = VehicleSequenceConfigurationProperties.class)
@TestPropertySource("/test.properties")
public class VehicleSequenceConfigurationPropertiesTest {
@Autowired
private VehicleSequenceConfigurationProperties vehicleSequenceConfigurationProperties;
@Test
public void checkPropagationTreeMaxSize() {
assertThat(vehicleSequenceConfigurationProperties.getPropagationTreeMaxSize()).isEqualTo(10000);
}
}
测试失败,"期望实际不为空"意味着未设置配置属性类中的属性propagationTreeMaxSize
。
答案 0 :(得分:14)
发布问题两分钟后,我找到了答案。
我必须使用@EnableConfigurationProperties(VehicleSequenceConfigurationProperties.class)
启用配置属性:
@RunWith(SpringRunner.class)
@TestPropertySource("/test.properties")
@EnableConfigurationProperties(VehicleSequenceConfigurationProperties.class)
public class VehicleSequenceConfigurationPropertiesTest {
@Autowired
private VehicleSequenceConfigurationProperties vehicleSequenceConfigurationProperties;
@Test
public void checkPropagationTreeMaxSize() {
assertThat(vehicleSequenceConfigurationProperties.getPropagationTreeMaxSize()).isEqualTo(10000);
}
}