后台:我正在使用带有guice
框架的guice-servlet
开发servlet。我想通过以下方式测试我的servlet:
问题:我正在寻找servlet测试框架,它可以让我执行上述两种测试。
与此同时,我查看了HttpUnit
,但我找不到将Guice
连接到它的方法:servlet可以在ServletRunner
中注册,但它们是由类提供的名称。这意味着ServletRunner将实例化它们(不注入依赖项)。
我还发现tadedon
项目的GuiceServletMockModule。似乎正是我正在寻找的东西。但我不确定它是否仍然存在。例如,我无法从他们的maven存储库中获取他们的maven包。
谢谢
答案 0 :(得分:3)
为了对你的servlet(HttpServlet的实例)进行单元测试,你不需要任何框架 - 你可以创建servlet类的新实例,并在传递模拟的请求和响应对象时直接调用所需的方法。
如果需要将代码与Guice依赖关系隔离,可以使用配置了mocks的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测试。