java 将Mockito与CDI集成

wlzqhblo  于 2022-12-25  发布在  Java
关注(0)|答案(3)|浏览(127)

我目前正在考虑扩展服务器和客户端应用程序的单元测试。Mockito已经在使用中,而且--我认为--非常适合手头的任务。然而,正如Mockito documentation本身所承认的:
Mockito不是一个依赖注入框架,不要指望[@InjectMocks注解]注入一个复杂的对象图,无论是模拟/间谍还是真实的对象。
当然,服务器端已经在某些地方通过注解使用了CDI,在不久的将来,客户端可能会在某些地方进行扩展,以便在JavaSE中使用CDI。现在/将来会有字段注入和构造器注入+ @postconstruct方法的大量混合。这对Mockito来说已经太复杂了,所以我正在寻找一些东西,让我可以轻松地使用CDI注解来注入Mockito的mock/spies/在需要的地方真实的对象。
Mockito的功能是否可以通过插件或类似的东西来扩展,以实现更接近CDI所指定的依赖关系解析(我不认为我需要完整的规范,而是更接近它的东西)?

des4xlb0

des4xlb01#

weld支持这种开箱即用的方式,特别是weld-junit。它支持junit4junit5。在这两种情况下,用户都可以为所需的注入点定义生产者方法,其中用户可以自由地使用mockito或powermock或任何其他模拟机制来创建模拟,然后weld将模拟注入测试对象。

toiithl6

toiithl62#

如果您希望使用OpenEJB模拟EJB/CDIbean,可以非常容易地做到:http://tomee.apache.org/master/examples/rest-applicationcomposer-mockito.html

qyyhg6bp

qyyhg6bp3#

cdi-unit和ioc-unit都有支持的模块,只需添加

@Produces
@Mock
ClassName mockedObject;

并且框架将使其成为可注入Bean。

相关问题