Java 尝试自动连接使用MockitoJUnitRunner运行的配置属性时出现NullPointerException
我一直试图在测试类中使用配置属性,但找不到这样做的方法,因为我总是得到NullPointerException 应用程序.yamlJava 尝试自动连接使用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
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"));
}