java - 如何注入(inject)或替换@Resource 依赖项?

标签 java junit dependency-injection mocking ejb

我有 SomeService,它使用 EJB TimerService 的 @Resource 注释。

@资源 私有(private)定时器服务timerService;

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

最佳答案

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

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

关于java - 如何注入(inject)或替换@Resource 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39386504/

相关文章:

java - 错误: This class should provide a default constructor

java - 当返回类型为项目的PaginatedList时,如何模拟mapper.query方法

junit 条件拆解

java - 如何使用 junit mockito 覆盖匿名类重写方法

dependency-injection - 如何解决 NonUniqueBeanException : Multiple possible bean candidates found in micron

java - 如何在不在 JPA 中加载相关实体的情况下使用外键保存实体?

java - Android中的调用方法

java - 如何将 Nmap 和 Wireshark 与应用程序捆绑在一起?

c# - 统一: Injection of multiple PerResolveLifetimeManager registered types

angular - 为什么 Angular CLI 不会自动在提供者数组中添加服务?