33

今、クラスのテストケースを書いています。HttpServletRequest オブジェクト パラメーターをテスト ケース メソッドに渡して、メソッドが機能しているかどうかを確認したいと考えています。だから、誰かが私にそれへの提案をしてください。

public void testCheckBatchExecutionSchedule() throws Exception
    {
        assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
    }
4

5 に答える 5

72

Spring はMockHttpServletRequestと呼ばれるクラスを提供します。これは、HttpServletRequest を必要とするコードをテストするために使用できます。

public void testCheckBatchExecutionSchedule() throws Exception
{
   MockHttpServletRequest request = new MockHttpServletRequest();
   request.addParameter("parameterName", "someValue");
   assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
}
于 2012-07-31T01:06:02.763 に答える
22

http://code.google.com/p/mockito/のようなモック ライブラリを使用してリクエスト オブジェクトをモックアウトする必要があります。

public void testCheckBatchExecutionSchedule() throws Exception
{
   HttpServletRequest mockRequest = mock(HttpServletRequest.class);
   //setup the behaviour here (or do it in setup method or something)
   when(mockRequest.getParameter("parameterName")).thenReturn("someValue");
   assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(mockRequest));
}
于 2012-07-30T12:57:30.450 に答える
7

HttpServletRequestインターフェースです。以前は、実際に必要なものを除いて、 のTestHttpServletRequestすべてのメソッドに対して空のメソッド本体を持つクラス ( など) を作成しただけでした。HttpServletRequestほとんどのメソッドでは、インスタンス変数を返し、そのインスタンス変数のセッターを含めて、テスト ケースで何を返すかを定義できるようにしました。 HttpServletRequestには多くのメソッドがありますが、ほとんどの IDE (私は Eclipse を使用しています) はメソッド スタブを生成できます。

問題は、各メソッドのデフォルトの動作として機能するために、コンストラクターに別のメソッドを渡すHttpServletRequestWrapper必要があることです。HttpServletRequest渡すnullNullPointerException.

于 2012-07-30T12:38:58.917 に答える
0

2018 年 2 月更新: OpenBrace Limited は閉鎖され、その ObMimic 製品はサポートされなくなりました。

Servlet API test-doubleのObMimicライブラリを使用することもできます。

import com.openbrace.obmimic.mimic.servlet.http.HttpServletRequestMimic;

public void testCheckBatchExecutionSchedule() throws Exception
{
   HttpServletRequestMimic request = new HttpServletRequestMimic();
   // Configure the request as necessary...
   // e.g. request.getMimicState().getRequestParameters().set("name", "value");
   assertTrue("Batch is Completed :", returnPointsRatingDisputeFrom.checkBatchExecutionSchedule(request));
}

リクエストを構成するために、HttpServletRequestMimic には HttpServletRequestState を返す getMimicState() メソッドがあり、これを使用して、リクエストの関連するすべての詳細を構成できます (また、関連する ServletContext、HttpSession などにアクセスし、必要に応じてこれらを同様に構成できます)。HttpServletRequestState のドキュメントには、そのプロパティとメソッドの概要、および完全に詳細なJavadocが含まれています。

ご了承ください:

  • ObMimic は、HttpServletResponse、ServletContext、HttpSession、ServletConfig などに同様の「模倣」クラスも提供します。

  • ObMimic の無料の「コミュニティ エディション」は、Web サイトのダウンロードページから入手できます。

  • このためにプロジェクトに追加する必要がある唯一のライブラリは、ObMimic の /lib/obmimic.jar です (サーブレット API 自体が既に存在すると仮定します)。

  • ObMimicのWeb サイトでは、入門ガイド、サンプル コードを含む一連のハウツーガイド、詳細なJavadocなど、完全なドキュメントが提供されています。

于 2013-11-13T14:21:36.897 に答える
-3

Tomcat が提供する API を使用すると、HttpServletRequest オブジェクトを取得できます。

HttpServletRequest request = (HttpServletRequest)org.apache.catalina.core.ApplicationFilterChain.getLastServicedRequest();

これにより、現在のスレッドからサービスを提供するためにサーブレットに渡された最後の要求が取得されます。

これは、Tomcat の「Strict Servlet Compliance」モードでのみ機能します。有効にするには、次の JVM パラメータを追加します。

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
于 2012-07-30T12:39:10.040 に答える