shokosブログ

プログラミング

Wicketはこんなにいろいろテストを書くことができるんだよ!

Wicketはこんなにいろいろテストを書くことができるんだよ!
常々からWicketのテストの充実さ(Ajaxまわり除く)に助けられているので、どんなことができるのか一部ご紹介します。

package jp.ne.hatena.syoko_sasaki;

import java.awt.Label;

import junit.framework.TestCase;

import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.util.tester.FormTester;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Test;


public class HomePageTest extends TestCase
{
	private WicketTester tester;

	@Override
	public void setUp()
	{
		tester = new WicketTester();
	}

	@Test
	public void test() throws Exception {
		//はじめのページを設定
		tester.startPage(HomePage.class);
		//ちゃんとページが表示されるかどうか
		tester.assertRenderedPage(HomePage.class);
		//コンポーネントがaddされているか
		tester.assertComponent("message",Label.class);
		//Labelの中身チェック
		tester.assertLabel("message", "hoge");
		//コンポーネントの活性チェック
		TextField text = (TextField) tester.getComponentFromLastRenderedPage("form:text");
		assertTrue(text.isEnabled());
		//フォームのテスト開始
		FormTester formTester = tester.newFormTester("form");
		//TextFieldに値いれる
		formTester.setValue("text", "foo");
		//セレクトボックス値をいれる
		formTester.select("box", 1);
		//サブミットボタンが複数ある場合は引数にidを指定しましょう。
		formTester.submit();
		//エラーメッセージがあったら取得
		tester.assertErrorMessages(new String[] {"◯◯は必須項目です。"});
	}

}

テストを書かないとソウルジェムが汚れちゃうよ!