java - 尝试自动装配使用 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 在测试类中使用配置属性而不模拟整个事情(实际配置非常大,很难模拟每个结果)?
解决方案
由于您使用的是 @Autowired 注释,因此您应该使用例如:@RunWith(SpringJUnit4ClassRunner.class)
这样,您将在春季环境中开始您的测试。
但是,如果您仍想使用 MockitoJUnitRunner,则可以使用:@InjectMocks private YamlConfig config 而不是使用@Autowired:
推荐阅读
- azure-logic-apps - 逻辑应用和 Office 365 批准电子邮件超时
- c# - IEnumerable 未能设置元素
- javascript - CodeIgniter 3 jQuery ajax 调用被忽略
- javascript - 如何使用javascript通过循环从一个对象到另一个对象获取密钥
- javascript - 如何控制台.log LinkedList
- java - Java 9+ 分段代码缓存是否需要 Java 9+ 编译?
- java - 将 JavaFX 项目导出为可执行文件,单击两次即可打开
- mysql - NodeJS - 使用 QueryBuilder 的 TypeORM 级联插入
- node.js - MongoNetworkError:第一次连接时无法连接到服务器 [MongoNetworkError:连接 ECONNREFUSED]
- c# - 2个不同数组中的不匹配元素