2

背景:guiceフレームワークを使用してサーブレットを開発していますguice-servlet。次の方法でサーブレットをテストしたいと思います。

  1. サーブレット単体テスト: get/post リクエストを提供することにより、サーブレットを他の依存関係から分離し、クライアントをシミュレートする
  2. サーブレット統合テスト: クライアントをシミュレートしますが、サーブレットの分離は行いません。また、統合テストの一環として、Guice 自体との統合をテストしたいと考えています。

質問:上記の両方の種類のテストを実行できるサーブレット テスト フレームワークを探しています。

その間、 を調べましたHttpUnitが、接続する方法が見つかりませんでしGuiceた。サーブレットは に登録できますがServletRunner、クラス名で提供されます。これは、ServletRunner が (依存関係を注入せずに) それらをインスタンス化することを意味します。

また、tadedonプロジェクトのGuiceServletMockModuleを見つけました。まさに私が探しているもののようです。しかし、それがまだ維持されているかどうかはわかりません。たとえば、maven リポジトリから maven パッケージを取得できませんでした。

ありがとう

4

1 に答える 1

3

サーブレット (HttpServlet のインスタンス) を単体テストするために、フレームワークは必要ありません。サーブレット クラスの新しいインスタンスを作成し、モックされた要求と応答オブジェクトを渡しながら目的のメソッドを直接呼び出すことができます。

コードを Guice の依存関係から分離する必要がある場合は、( @Before メソッドで) モックで構成された Injector を使用してクラスのインスタンスを作成できます。次に例を示します。

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 アプリケーションでうまく機能しますが、一般的なサーブレット テストに適応させることができます。

于 2015-01-04T22:40:37.327 に答える