1

JavaWFSWebサービスの実装を単体テストしようとしています。このサービスは、次のようなKVPパラメータを含むリクエストを受け入れることができます:http: //www.someserver.com/wfs&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=InWaterA_1M

または、次のようなXMLフラグメントを含むリクエストを受け入れることもできます。

<?xml version="1.0" ?> 
  <GetFeature  version="1.1.0" service="WFS" maxFeatures="10000" 
       xmlns="http://www.opengis.net/wfs" 
       xmlns:myns="http://www.someserver.com/myns" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.1.0/WFS.xsd"> 
    <Query typeName="myns:InWaterA_1M"/> 
  </GetFeature>

ServletUnitを使用してKVPの方法をテストしています。これは簡単です。

 ServletUnitClient sc = servletRunner.newClient();
 WebRequest request = new PostMethodWebRequest( "http://www.someserver.com/wfs
 request.setParameter( "SERVICE", "WFS );
 ...
 request.setParameter( "TYPENAME" "InWaterA_1M" ); 
 sc.getResponse( request);

ただし、XMLタイプのリクエストに対応するリクエストを作成する方法がわかりません。何か案は?どうしても必要な場合を除いて、別のテストフレームワークライブラリを使用する必要はありません。

4

2 に答える 2

1

次のように作成できます。

  1. 必要なリクエストのXMLを作成します。
  2. MockHttpServletRequest APIを作成します:http ://static.springsource.org/spring/docs/2.0.x/api/org/springframework/mock/web/MockHttpServletRequest.html

  3. 電話setContent(xml);してsetContentType("text/xml");

  4. サーブレットメソッドを直接呼び出します。例someServlet(mockReq,mockRes);

このように、jUnitのテスト中にサーブレットコンテナを起動する必要はありません...

于 2010-09-20T09:09:17.220 に答える
0

ドキュメントをざっと見てみると、ServletUnitClientは、現在使用しているように、POSTリクエストとKVPスタイルの引数を使用したGETリクエストをサポートできるようです:http://httpunit.sourceforge.net/doc/tutorial/task1editor-form .html

XMLを使用したリクエストは、HTMLフォームを投稿するのと同じように機能しますが、必ずしもその前にHTMLUIがあるとは限りません。

ただし、XML解析の単体テストを別のテストに分割し、サーブレットを介して明示的にテストすることはおそらくありません。サーブレットは、XML解析およびWFSサービスの他の部分のHTTPフロントエンドとして機能しているため、これらの部分を個別に単体テストする必要があります(おそらく、すでに実行しているので、この部分は無視してください)。

私の経験では、サービスのHTTP /フロントエンドのテストは通常​​最も重要でない部分であり、その背後にあるロジックは壊れやすいため、テストすることがより重要です。また、フロントエンドとは別にサービスロジックをテストすると、多くの場合、より優れた設計を使用する必要があります。

もちろん、時間が必要な場合、またはフロントエンド自体に多くのロジックが含まれている場合は、その部分も単体テストする必要があります。

于 2010-09-20T08:54:20.083 に答える