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>