gpt4 book ai didi

java - Guice-servlet单元测试

转载 作者:行者123 更新时间:2023-11-30 08:18:06 28 4
gpt4 key购买 nike

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

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

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

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

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

谢谢

最佳答案

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

如果您需要将您的代码与 Guice 依赖项隔离开来,您可以使用配置有 mock 的 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 测试。

关于java - Guice-servlet单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762386/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com