Java 使用@TestPropertySource时,属性在@ConfigurationProperties时始终为null
使用Java 使用@TestPropertySource时,属性在@ConfigurationProperties时始终为null,java,spring,unit-testing,dependency-injection,Java,Spring,Unit Testing,Dependency Injection,使用@TestPropertySource 配置文件application.yml: 配置类 @Component @Data @ConfigurationProperties(prefix="integration.some.configuration") public class SomeProperties { private String userInfo; } 服务类别: @Service @RequiredArgsConstructor @Ena
@TestPropertySource
配置文件application.yml:
配置类
@Component
@Data
@ConfigurationProperties(prefix="integration.some.configuration")
public class SomeProperties {
private String userInfo;
}
服务类别:
@Service
@RequiredArgsConstructor
@EnableConfigurationProperties(SomeProperties.class)
public class SomeServiceImpl {
private final SomeProperties someProperties;
public String get() {
return someProperties.getUserInfo();
}
}
测试夹具:
@SpringJUnitConfig({
SomeServiceImpl.class,
SomeProperties.class})
@TestPropertySource(properties = {
"integration.some.configuration.userInfo=someUser"
})
class SomeServiceImplTest {
@Autowired
SomeServiceImpl someServiceImpl;
@Test
void someTest() {
String user = someServiceImpl.get();
....
}
}
在上面的测试中,注入的用户总是
null
您错过了自动连线
@Service
@RequiredArgsConstructor
@EnableConfigurationProperties(SomeProperties.class)
public class SomeServiceImpl {
@Autowired // <--------
private final SomeProperties someProperties;
public String get() {
return someProperties.getUserInfo();
}
}
@服务
@所需参数构造函数
@EnableConfigurationProperties(SomeProperties.class)
公共类SomeServiceImpl{
@Autowired//您可以发布准确的配置和类型声明吗?我非常确定您没有使用集成。在这种情况下,一些.configuration
属性和命名非常重要。我不能,我不允许这样做。我不确定这是否是问题所在,因为他没有共享全部源代码,他可能正在使用constructor或setter注射。
@Service
@RequiredArgsConstructor
@EnableConfigurationProperties(SomeProperties.class)
public class SomeServiceImpl {
@Autowired // <--------
private final SomeProperties someProperties;
public String get() {
return someProperties.getUserInfo();
}
}