HttpUnitでファイルアップロードのテスト

| コメント(0) | トラックバック(0)

現在のプロジェクトでユニットテストを徐々に導入中。今まで社内にはちゃんとしたテストの手順とか無かったんだけど、プロジェクトも徐々に大きくなってきたのと、時間的に若干余裕が出てきたので色々整備中。

さて、通常のJavaクラスはJUnitでテストすればいいけど、サーブレットとかは?って事で、HttpUnitを使う事にした。Cactusも検討したけど。

とりあえずチュートリアルとか見て普通のテストは書けるようになったんだけど、ファイルアップロードを扱うサーブレットのテストでちょっとハマった。

まず1点目。
PostMethodWebRequestのselectFileメソッドでエミュレートできるみたいなんだけど、IllegalNonFileParameterExceptionが発生する。

解決方法はPostMethodWebRequestを生成する際に以下のコンストラクタを使用して第二引数をtrueにする。

new PostMethodWebRequest("http://localhost/servlet", true)

2点目。よくあるケースとしてファイルアップロード用のボックスがあって、その項目が必須じゃない場合があると思う。Yahooメールの添付ファイルのページとか、ボックスが5個有るけど、別に必ず5個同時にファイルアップロードする必要はない(当然)。

例えば、以下のファイル入力用のボックスがあって、ファイル名を指定しない場合のテストをしたい。
<input type="file" name="file1" />

以下はどれも例外が発生してNG

webRequest.selectFile("file1", null);
webRequest.selectFile("file1", new File(""));

selectFileを呼ばないと、それは上記フォームがページ上に存在しない状態をエミュレートしている事になり、やりたいテストとは違う。結局MLで解決方法を見つけた(ページ末尾のコード参照)。

トラックバック(0)

トラックバックURL: http://www.kazu.tv/blog-mgr/mt-tb.cgi/667

コメントする

このブログの作者

名前:kazu
仕事:IT関係の何でも屋
メール:kazu 後幕 kazu どと tv
詳しくはこの辺

このブログ記事について

このページは、kazuが2008年6月22日 21:55に書いたブログ記事です。

ひとつ前のブログ記事は「Samba + SELinux」です。

次のブログ記事は「EJBでのクラスパス」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ