将 Mockito 与 CDI 集成

Integrate Mockito with CDI

我目前正在考虑扩展服务器和客户端应用程序的单元测试。 Mockito 已经在使用中 - 我认为 - 非常适合手头的任务。然而,正如 Mockito documentation 本身承认的那样:

Mockito is not an dependency injection framework, don't expect [the @InjectMocks annotation] to inject a complex graph of objects be it mocks/spies or real objects.

服务器端当然已经在一些地方通过注释有了CDI,在不久的将来客户端可能会在一些地方扩展到使用CDI for JavaSE。 is/will 是字段注入和构造函数注入 + @postconstruct 方法的疯狂组合,这对于 Mockito 来说已经太复杂了。所以我正在寻找能让我轻松使用 CDI 注释在需要的地方注入 Mockito 的 mocks/spies/real 对象的东西。

能否通过插件或类似的东西扩展 Mockito 的功能,以启用更接近 CDI 指定的依赖项解析(我不认为我需要完整的规范,但更接近它的东西)?是否有另一个与 Mockito 和 JUnit5 集成的库可以做到这一点?

weld 开箱即用地支持此功能,特别是 weld-junit. It supports both junit4 and junit5。在这两种情况下,都可以为所需的注入点定义生产者方法,其中可以自由使用 mockito 或 powermock 或任何其他模拟机制来创建模拟,然后将其焊接到测试对象中。

如果你想用 OpenEJB 模拟 EJB/CDI beans,你可以很容易地做到: http://tomee.apache.org/master/examples/rest-applicationcomposer-mockito.html