写点什么

TestNG 中使用 Guice 来进行依赖注入

作者:HoneyMoose
  • 2023-04-24
    美国
  • 本文字数:679 字

    阅读完需:约 2 分钟

Guice 是 Google 开发的一个轻量级,基于 Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。


Guice 非常小而且快。Guice 是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是 setter 方法)进行注入。


Guice 采用 Java 加注解的方式进行托管对象的配置,充分利用 IDE 编译器的类型安全检查功能和自动重构功能,使得配置的更改也是类型安全的。


Guice 提供模块对应的抽象 module,使得架构和设计的模块概念产物与代码中的 module 类一一对应,更加便利的组织和梳理模块依赖关系,利于整体应用内部的依赖关系维护,而其他 IOC 框架是没有对应物的。


此外,借助 privateModule 的功能,可以实现模块接口的明确导出和实现封装,使得支持多数据源这类需求实现起来异常简单。


定义一个 Guice Module


这个 Guice Model 会实现 Module 接口。


然后对需要注入的类进行绑定。


绑定的语句在这里:


        binder.bind(TestConfigStorage.class).toInstance(config);        binder.bind(WeChatOfficialAccountService.class).toInstance(weChatOfficialAccountService);        binder.bind(WeChatMsgService.class).toInstance(weChatMsgService);
复制代码


测试中使用


因为我们需要在测试中使用,所以我们会使用 testNG 的 Guice 注解。


使用下面的语句直接注入到模块中。


然后把需要的服务,注入进来就可以了。


@Injectprotected WeChatOfficialAccountService wxService;


是不是非常简单。


相对 Junit 测试框架来说,TestNG 使用 Guice 更加方便。


如何在 Junit 中使用 Guice ,请参考文章:Junit 5 如何使用 Guice DI 中的内容。


https://www.ossez.com/t/testng-guice/14396

用户头像

HoneyMoose

关注

还未添加个人签名 2021-03-06 加入

还未添加个人简介

评论

发布
暂无评论
TestNG 中使用 Guice 来进行依赖注入_HoneyMoose_InfoQ写作社区