Guice-servlet单元测试

Guice-servlet unit testing

背景: 我正在使用 guiceguice-servlet 框架开发 servlet。我想通过以下方式测试我的 servlet:

  1. Servlet 单元测试:通过提供 get/post 请求
  2. 将 servlet 与其他依赖项隔离并模拟客户端
  3. Servlet 集成测试:模拟客户端,但没有 servlet 隔离。另外,作为集成测试的一部分,我想测试我与 Guice 本身的集成。

问题:我正在寻找可以让我执行上述两种测试的servlet测试框架。

同时我查看了 HttpUnit,但没有找到连接 Guice 的方法:servlet 可以在 ServletRunner 中注册,但提供了它们通过 class 名称。这意味着 ServletRunner 将实例化它们(不注入依赖项)。

我还找到了 tadedon 项目的 GuiceServletMockModule。似乎正是我要找的。但我不确定它是否仍在维护。例如,我无法从他们的 maven 存储库中获取他们的 maven 包。

谢谢

为了对您的 servlet(HttpServlet 实例)进行单元测试,您不需要任何框架 - 您只需创建 servlet 的新实例 class,并在传递模拟请求和响应对象。

如果您需要将您的代码与 Guice 依赖项隔离开,您可以使用配置有模拟(在@Before 方法中)的 Injector 创建您的 class 实例,例如:

Injector injector = Guice.createInjector( new AbstractModule() {
    @Override
    protected void configure() {
        bind( MyClass.class ).toInstance( mock(MyClass.class) );
        bind( AnotherClass.class ).toInstance( mock(AnotherClass.class) );
    }
} );
//Create new instance of class  that needs injections
ThirdClass thirdInstance = injector.getInstance( ThirdClass.class );

至于集成测试,您可以尝试使用 SoapUI - 它适用于 SOAP 和 REST 应用程序,但您可以将其调整为通用 servlet 测试。