JUnit(djUnit)でServletをテスト(with MockHttpServletRequest)

前回の覚書の続きっぽい話をば。
まぁ、PlayStation3PSN障害(クラック問題)で、Apacheとかのhttpd使ってるなら・・・
ここら辺を突破されてしまった訳で(ー”ー;

javax.servlet.http.HttpServlet 継承クラスをJunitでテストするには

HttpServletを継承したクラスをJUnitdjUnit)で自動テストするには、(doPost|doGet)メソッドの引数を理解する必要があるようで。
ていうか、製造いや設計時に理解しておく必要があるようでw←不束者。

protected void doPost(HttpServletRequest req,
                      HttpServletResponse resp)
               throws ServletException,
                      java.io.IOException

さて、入力引数のHttpServletRequest、HttpServletResponse・・・。これってインタフェースなんですよね。つまり、これを実装した具象クラスをnewして渡してあげる必要がある。
で、自作する?・・・違う違うw。世の中には既に実装したMockオブジェクトがあるようです。
例えば、Spring Frameworkの場合、こんな便利なクラスがあったりしました。

Spring Framework 3.0.xの場合は前者。後者は、2.5.x。

ServletFilter用のMockもありますね。テスト時に助かりそうです。
ってことで、以下のような感じでテスト!

	@Test
	public void testDoPost() {
		MockHttpServletRequest req = new MockHttpServletRequest();
		MockHttpServletResponse resp = new MockHttpServletResponse();
		HogeHttpServlet target = new HogeHttpServlet();
		try {
			target.init();
			target.doPost(req, resp);
			target.destroy();
		} catch (Exception e) {
			e.printStackTrace();
			fail("Oops!!");
		}
		// 以下略
	}

ちなみに、Mock〜を使うには、以下のような名前のJarをclasspath上に追加が必要です。

version こんなjarが必要
3.0.x org.springframework.test-3.0.5.RELEASE.jar
2.5.x spring-mock.jar

いじょ