- - PR -
サーブレットのテスト(JUnit)で自分でMockObjectを作成できずに困ってます。
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-03-01 18:49
「前回StrutsTestCase for JUnitでテストケースの作成」の質問をさせていただきましたが、
「JUnitのみでMockObjectを使いサーブレットコンテナを作りJUnitを実行するテストケース」を作れと言われ調べましたがほとんどのサイトが「StrutsTestCase for JUnit」か「cactus」でのテストケースばかりでJUnitのみの作成方法が見つかりません。 どなたか教えていただけませんでしょうか? まったくのゼロからの質問で申し訳ございません |
|
投稿日時: 2004-03-01 21:49
「JUnitのみで作れ」っていうのは偉い人からのお勉強の課題でしょうか?
よけいなお世話ですが、だとすればそれを自分で考えずにここで聞くのはあまり適切ではない気がします。偉い人はわかっているんでしょうし・・・。 StrutsTestCase は動いたのでしょうか?動いたのなら、それを参考にしてみてはいかがでしょうか? あと、具体的に何がわからないのかがわからないと答えにくいです。 訪ね方を工夫するとすばやく分かりたいことが出てくると思いますよ。 |
|
投稿日時: 2004-03-02 11:07
返信ありがとうございます。
ではもう一度自分の力でがんばってみます。 StrutsTestCaseは動く前にそれは使わずにと言われたので実はまだ動いていません。 「MockObjectを使いサーブレットコンテナを作る」の参考サイトがなかなか見つからずに どうすれば良いのかわからなかったのでヒントでもと思い此処に書かせていただきました |
|
投稿日時: 2004-03-02 11:55
やりたいことをまとめるとこんな感じですか?
・サーブレットの単体テストをしたい。 ・テスト対象はStrutsを使っていない。 ・CactusのようにインコンテナではなくMockobject方式でしたい。 そうするとこの辺を調べるといいんじゃないでしょうか。 http://www.mockobjects.com/wiki/ http://mockobjects.sourceforge.net/javadoc/1.4/ http://mockobjects.sourceforge.net/javadoc/1.4/com/mockobjects/servlet/package-summary.html 以下追加。 先月発売のJava Press vol.34 にMockObjectsを使ったテストについて書いた 記事がちょっとだけ載っているので、そちらも参考になると思います。 [ メッセージ編集済み 編集者: koe 編集日時 2004-03-02 12:02 ] |
|
投稿日時: 2004-03-02 13:42
koeさんありがとうございます。
現在やりたいことはそんな感じです。 最終的にはJSPのテストもやりたいのですがまずはサーブレットのテストをやります。 教えていただいたサイトを元にやってみようと思います ありがとうございました。 |
|
投稿日時: 2004-03-03 12:31
サーブレットからJSPを呼び出す部分を
-------------------------------------------------------------------------------- ServletContext sc = getServletContext(); sc.getRequestDispatcher("http://localhost:8080/TestCase/Error.jsp").forward(req,res); -------------------------------------------------------------------------------- と定義してますがNullPointExceptionになってしまいます。 おそらくServletContextがテストケースで設定していないために、getServletContext()でエラーが出てると思い、MockServletContextを設定しようと次のようにしました。 -------------------------------------------------------------------------------- import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mockobjects.dynamic.Mock; import com.mockobjects.dynamic.OrderedMock; import com.mockobjects.helpers.ServletTestHelper; import com.mockobjects.servlet.MockServletContext; import junit.framework.TestCase; public class ContributionCheckTest extends TestCase { Mock mockHttpServletRequest = new Mock(HttpServletRequest.class); Mock mockHttpServletResponse = new OrderedMock(HttpServletResponse.class, "Response with non-default name"); ContributionCheck aServlet = new ContributionCheck(); final StringWriter output = new StringWriter(); final PrintWriter contentWriter = new PrintWriter(output); final ServletTestHelper helper = new ServletTestHelper(); //ここでエラーが出る final MockServletContext sc = helper.getServletContext(); public ContributionCheckTest(String arg0) { super(arg0); } public static void main(String[] args) { junit.swingui.TestRunner.run(ContributionCheckTest.class); } public void testSimpleAddition() throws ServletException, IOException { mockHttpServletResponse.expect( "setContentType", "text/html"); mockHttpServletResponse.expectAndReturn( "getWriter", contentWriter ); aServlet.doGet((HttpServletRequest) mockHttpServletRequest.proxy(), (HttpServletResponse) mockHttpServletResponse.proxy()); mockHttpServletRequest.verify(); mockHttpServletResponse.verify(); } } -------------------------------------------------------------------------------- new ServletTestHelper()にはHttpServletを引数にしないといけないようなのですが、 この部分がよくわかりません。 そもそも final ServletTestHelper helper = new ServletTestHelper(); final MockServletContext sc = helper.getServletContext(); このようにServletContextを設定する考え方が間違っているのでしょうか? |
1
