質問

現在、アプリケーションのビジネス ロジックをテストするために TestNG フレームワークを使用しています。最近、いくつかのサーブレット クラスを追加しました。

TestNg フレームワークでこれらのサーブレット クラスを単体テストするにはどうすればよいですか?

役に立ちましたか?

解決

可能であれば、スカフマンのアドバイスに従ってください。そうでない場合、またはサーブレット内のビジネス ロジックではなく、フロントエンド コントローラーとしてのサーブレットの動作をテストしたい場合は、以下を使用できます。

他のヒント

最も簡単な方法の1つは、桟橋から ServletTester のです。すべてが自動的に埋め込まれた桟橋内で行われるので、テスト中に開かれた何のポートがありません!あなたは以下の案件よりもMavenを使用する場合は、この方法を有効にする必要があります:

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.16</version>
  <scope>test</scope>
</dependency>

例:

ServletTesterを準備します。

ServletTester tester=new ServletTester(); 
tester.addServlet(HelloServlet.class, "/hello"); 
tester.start();

HTTPリクエストを作成します。
HttpTester request = new HttpTester(); 
request.setMethod("GET");
request.setHeader("Host","tester"); 
request.setURI("/hello");
request.setVersion("HTTP/1.0");

コールサーブレットと応答を取得ます:

HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));

アサートあなたが応答にチェックしたいと、それはコンテンツです。

assertEquals(200,response.getStatus()); 
assertEquals("Hello Servlet",response.getContent());

私はあなたがのうちのサーブレットクラスの、あなたがテストすることができ、独自のクラスにビジネスロジックのすべてを移動することを示唆しています。その彼らに何もないと、ちょうどあなたのビジネスロジックと容器との間の接着剤として葉サーブレット、価値がテストます。

などなどHttpServletRequestServletConfig、などAPIクラス、(JMock、Mockito、など)お好みのモックフレームワークを使用するための主要な標的は、それらがすべてのインターフェイスをしているからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top