サーブレット単体テスト
-
24-09-2019 - |
質問
現在、アプリケーションのビジネス ロジックをテストするために 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());
私はあなたがのうちのサーブレットクラスの、あなたがテストすることができ、独自のクラスにビジネスロジックのすべてを移動することを示唆しています。その彼らに何もないと、ちょうどあなたのビジネスロジックと容器との間の接着剤として葉サーブレット、価値がテストます。
などなどHttpServletRequest
、ServletConfig
、などAPIクラス、(JMock、Mockito、など)お好みのモックフレームワークを使用するための主要な標的は、それらがすべてのインターフェイスをしているからです。
所属していません StackOverflow