[Java]Javaでテスト用WEBサーバーを手軽に立てる方法
WEB APIのクライアントプログラムを組んでいると、リクエスト対して適当な値を返してくれるモックサーバーが欲しくなります。RubyだとWebrickを使って簡単にサーバーを立てられるんですが、Javaでやりたい…。
なにはともあれコード例を
JUnit4のテストケースから利用する例です。
public class TestCase { private static Server server; @BeforeClass public static void prepareServer() throws Exception { server = new Server(3000); server.addHandler(new AbstractHandler() { @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().write("aaa"); HttpConnection.getCurrentConnection().getRequest().setHandled(true); } }); server.start(); } @AfterClass public static void closeServer() throws Exception { server.stop(); server.destroy(); } }
超簡単!!
これだけで3000番でリクエストを待ち受け"aaa"という文字列を返すサーバーが出来上がってしまいました。
handleメソッドの引数targetにリクエストされたパスが入っているので、それに合わせて結果を変えるなんてことも出来ますよ。
Jettyの導入方法
最後にJettyの導入方法を。といっても説明することないくらい簡単です。
1.Jettyのページからライブラリを落としてくる。今回は、jetty-6.1.19.zipを使いました。
2.1を解凍したフォルダ/lib中の3つのjarファイルにクラスパスを通す。
以上です。簡単すぎますね。
H2と組み合わせてポータブルなWEBアプリを作っちゃったりとかいろいろ使い道ありそうですね。Jetty素敵です。