我一直在尝试在我的测试类中使用配置属性,但找不到这样做的方法,因为我总是得到 NullPointerException。
application.yaml
affix:
lover: 'interests'
social: 'social_media'
YamlConfig.java
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
@EnableAutoConfiguration
@Data
public class YamlConfig {
private HashMap<String, String> affix;
}
服务.java
@Autowired
private YamlConfig config;
...
setFeatureName(config.getAffix().get("social"));
// supposed to return social_media
上面的代码在我的服务中运行良好,但是当我尝试在测试类中使用配置属性时,它不起作用。
服务测试.java
@RunWith(MockitoJUnitRunner.class)
public class MetadataServiceTest {
@Autowired
private YamlConfig config;
@Test
public void testPropertiesNotNull() {
assertNotNull(config.getAffix().get("social"));
}
我也尝试过其他注释,但似乎都不起作用。大多数示例都是使用 JUnitRunner 运行测试的,我不确定这是否是它们在我的测试类上不起作用的原因。
无论如何,是否可以使用 MockitoJUnitRunner 获取要在测试类中使用的配置属性而不模拟整个事情(实际配置非常大,很难模拟每个配置的结果(?
测试中的@Autowired
将被忽略,因为您没有选择任何 Spring 上下文。使其成为带有注释的集成弹簧测试。
由于你使用的是@Autowired注释,你应该使用 ex: @RunWith(SpringJUnit4ClassRunner.class(
这样,您将在春季环境中开始测试。
但是,如果您仍然想使用MockitoJUnitRunner,而不是使用@Autowired您可以使用:@InjectMocks私有 YamlConfig 配置;