spring-boot - 如何将 application.yaml 中的值注入 Junit 5 测试用例
问题描述
我正在使用 Junit5 在 java 中编写单元测试用例。我在 application.yaml 中添加的值很少,但我无法在我的测试文件中检索它们,例如。ownerMasterList 值是 null 但它存在于 application.yaml
@ExtendWith(MockitoExtension.class)
public class OwnerServiceTest {
@Value("${owner.master-list}")
private ownerMasterList;
@Test
void findAllOwners(){
---test detail
}
}
解决方案
通过阅读您的代码,您似乎正在使用 JUnit5 ( @ExtendWith(MockitoExtension.class)
)。
用于触发 Spring 应用程序上下文启动的正确扩展名是 ( @ExtendWith(SpringExtension.class)
)。如果您使用的是 Spring Boot,则可以使用@SpringBootTest
本身带有注释的注释@ExtendWith(SpringExtension.class)
。
不过要注意一点:在对代码进行单元测试时,不应连接应用程序上下文。您应该单独测试您的类并ownerMasterList
通过构造函数注入所需的属性(此处)(请参阅@BeforeEach
JUnit 5 注释):
class OwnerServiceTest {
private OwnerService ownerService;
@BeforeEach
void setUp() {
this.ownerService = new OwnerService(new ArrayList<>(...));
}
}
推荐阅读
- azure - 从 ARM 模板部署证书时出现 InternalServerError
- office-js - 从 office ui fabric core 的下拉列表中获取/检索所选选项的值/数据属性
- postgresql - Postgresql 多租户数据库架构
- php - ics下载适用于PC但不适用于Android
- excel - 我想用 VLookup 和不同的单元格检查数据
- python - 如何用 %20 替换空格?
- python - Networkx 用于在两条边之间绘制边
- java - 创建没有密码的jks文件
- java - 将 JPanel 的一个元素锁定到位
- angular - Angular如何用默认值的自定义对象填充数组