如何注入或替换@Resource依赖项?

时间:2016-09-08 08:50:19

标签: java junit dependency-injection mocking ejb

我有一些SomeService对EJB TimerService使用@Resource注释。

@Resource private TimerService timerService;

如何在SomeService中注入一个模拟TimerService来代替这个TimerService?

1 个答案:

答案 0 :(得分:1)

如果您正在使用mockito:Mockito可以为您注入注释字段: @RunWith(MockitoJUnitRunner.class) vs MockitoAnnotations.initMocks(this)

我建议不要在字段上使用注释来使用带注释的构造函数。这样,您可以将所有注入的字段设置为final,并且当依赖项更改而不是运行时/测试失败/异常时,您将获得构建失败。而且额外的好处是你可以在测试中调用构造函数并以这种方式注入模拟。