NullPointerException 尝试自动连接使用 MockitoJUnitRunner 运行的配置属性



我一直在尝试在我的测试类中使用配置属性,但找不到这样做的方法,因为我总是得到 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 配置;

相关内容

  • 没有找到相关文章

最新更新