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

Java 尝试自动连接使用MockitoJUnitRunner运行的配置属性时出现NullPointerException,java,spring,spring-boot,mockito,Java,Spring,Spring Boot,Mockito,我一直试图在测试类中使用配置属性,但找不到这样做的方法,因为我总是得到NullPointerException 应用程序.yaml affix: lover: 'interests' social: 'social_media' YamlConfig.java @Configuration @EnableConfigurationProperties @ConfigurationProperties @EnableAutoConfiguration @Data public class

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

应用程序.yaml

affix:
  lover: 'interests'
  social: 'social_media'
YamlConfig.java

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
@EnableAutoConfiguration
@Data
public class YamlConfig {
    private HashMap<String, String> affix;
}
上面的代码在我的服务中运行良好,但当我尝试在测试类中使用配置属性时,它不起作用

ServiceTest.java

@RunWith(MockitoJUnitRunner.class)
public class MetadataServiceTest {
@Autowired
private YamlConfig config;

@Test
public void testPropertiesNotNull() {
  assertNotNull(config.getAffix().get("social"));
}
我也尝试过其他注释,但它们似乎都不起作用。大多数示例都是使用JUnitRunner运行测试的,我不确定这是否是它们不能在我的测试类上工作的原因


使用MockitoJUnitRunner在测试类中使用配置属性,而不模拟整个过程(实际的配置非常大,很难模拟每个配置的结果)?

测试中的
@Autowired
被忽略,因为您没有选择任何Spring上下文。将其设置为带注释的集成Spring测试。

测试中的
@Autowired
将被忽略,因为您没有选择任何Spring上下文。将其设置为带注释的集成Spring测试。

因为您使用的是@Autowired annotation,所以应该将其用于ex:@RunWith(SpringJUnit4ClassRunner.class)

这样,您将在spring上下文中开始测试

但如果您仍然想使用MockitoJUnitRunner,而不是使用@Autowired,您可以使用: @注射模拟
私有YamlConfig配置

因为您使用的是@Autowired注释,所以应该使用for ex:@RunWith(SpringJUnit4ClassRunner.class)

这样,您将在spring上下文中开始测试

但如果您仍然想使用MockitoJUnitRunner,而不是使用@Autowired,您可以使用: @注射模拟
私有YamlConfig配置

您不会在spring上下文中启动测试,因此不会拾取
@Autowired
,因此不会注入任何内容。要么使用mock,要么使用spring,不要将两者混合使用。(我建议模拟)您不在spring上下文中启动测试,因此不会拾取
@Autowired
,因此不会注入任何内容。要么使用mock,要么使用spring,不要将两者混合使用。(我建议使用mocks)你能给我提供准确的注释吗?我刚刚迷路了。@clumsy.kitten
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=YamlConfig.class)
诸如此类的东西,但请记住这是有后果的。阅读有关春季集成测试的内容,非常感谢!我试一下:)你能给我提供准确的注释吗,我刚刚迷路了。@clumsy.kitten
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=YamlConfig.class)
诸如此类的东西,但请记住这是有后果的。阅读有关春季集成测试的内容,非常感谢!我试试看:)
@RunWith(MockitoJUnitRunner.class)
public class MetadataServiceTest {
@Autowired
private YamlConfig config;

@Test
public void testPropertiesNotNull() {
  assertNotNull(config.getAffix().get("social"));
}