首页 > 解决方案 > 尝试自动装配使用 MockitoJUnitRunner 运行的配置属性时出现 NullPointerException

问题描述

我一直在尝试在我的测试类中使用配置属性,但找不到这样做的方法,因为我总是得到 NullPointerException。

应用程序.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 在测试类中使用配置属性而不模拟整个事情(实际配置非常大,很难模拟每个结果)?

标签: javaspringspring-bootmockito

解决方案


由于您使用的是 @Autowired 注释,因此您应该使用例如:@RunWith(SpringJUnit4ClassRunner.class)

这样,您将在春季环境中开始您的测试。

但是,如果您仍想使用 MockitoJUnitRunner,则可以使用:@InjectMocks private YamlConfig config 而不是使用@Autowired:


推荐阅读