13

Jettyサーバーが組み込まれたサーブレットをユニットテストするにはどうすればよいですか?

たとえば、以下のサーブレットメソッドをテストする方法は?

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    //any logic inside
}
4

2 に答える 2

16

junit のようなものを使用して、jetty のインスタンスを埋め込んでサーブレットをブートストラップすることを非常に好みます。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/MinimalServlets.java

それはそれを行う方法の最小限の例です。

これは、桟橋自体の大部分をテストし、起動してそのペースで実行する方法でもあります。

特定のサーブレットまたはハンドラーについては、多くの場合、jetty-test-helper アーティファクトで jetty-client または SimpleRequest を使用します。URLConnection も同様に機能します。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.toolchain.git/tree/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/SimpleRequest.ジャワ

これは jetty-client でのテストです。これは jetty-9 用なので、7 または 8 が必要な場合は、対応するタグの下を見てください。jetty-9 でかなりリファクタリングされています。

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java

注: 起動する jetty のポートとして 0 を渡すことをお勧めします。これにより、テスト目的で jetty から引き抜くことができるランダムなオープン ポートが得られます。これにより、複数のビルドが CI または並列で実行されている状況が回避されます。ポートの競合が発生する可能性のあるビルド。

于 2013-01-06T12:05:57.743 に答える