2

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

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

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

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

我还找到了tadedon项目的GuiceServletMockModule。似乎正是我正在寻找的东西。但我不确定它是否仍然保持不变。例如,我无法从他们的 Maven 存储库中获取他们的 Maven 包。

谢谢

4

1 回答 1

3

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

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

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 测试。

于 2015-01-04T22:40:37.327 回答