Webのユニットテスト① Java
Webアプリケーションとデータベースを組み合わせたテストも作ってみます。
まずはJavaから。
まずは、Apache Clickでテスト対象となるサンプルアプリを作ってみます。
GUIの時と全く同じで・・・
検索ボタンを押すと、以前に作ったuserテーブルの全データを表示します。
SampleForm.java
以前に作った、User.java、UserDao.java、Dbcp.javaを使って実装しています。
ClickIDEに付属していたのはApache Click Ver1.5だったので、
今回はApache Click Ver2.2で作ってみました。
Ver2.2だとPublicプロパティでなくても、
@Bindableアノテーションをつければ自動バインディングされるみたいです。
Webアプリケーションなのですが、Tableコンポーネントやイベントリスナーがあったりして、
GUIアプリケーションのようなコーディングができますね!
package sample; import java.sql.Connection; import org.apache.click.Page; import org.apache.click.control.Column; import org.apache.click.control.Form; import org.apache.click.control.Submit; import org.apache.click.control.Table; import org.apache.click.util.Bindable; public class SampleForm extends Page { @Bindable protected Form form = new Form(); @Bindable protected Table table = new Table(); public SampleForm() { // テーブルの初期化 this.table.setClass(Table.CLASS_ITS); this.table.addColumn(new Column("id", "Id")); this.table.addColumn(new Column("name", "Name")); // 検索ボタンとボタン押下イベントの設定 this.form.add(new Submit("検索")); this.form.setListener(this, "onSubmit"); } // 検索ボタン押下イベント public boolean onSubmit() throws Throwable { Connection conn = Dbcp.getInstance().getConnection(); try { UserDao dao = new UserDao(conn); this.table.setRowList(dao.selectAll()); } finally { conn.close(); } return true; } }
SampleForm.htm
バインド変数の$tableと$formを出力しているだけです。
<html> <head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8"> <title>Blank</title> $imports </head> <body> $table $form </body> </html>