GUI+DBのユニットテスト① Java

GUIアプリケーションとデータベースを組み合わせたテストも作ってみます。
まずはJavaから。


まずは、JavaのSwingでテスト対象となるサンプルアプリを作ってみます。


こんな画面で・・・



検索ボタンを押すと、以前に作ったuserテーブルの全データを表示します。
サンプルアプリなんで、それだけです(;´Д`)


SampleFrame.java

以前に作った、Dbcp.java、User.java、UserDao.javaを使って実装しました。

package sample;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import org.jdesktop.beansbinding.BeanProperty;
import org.jdesktop.beansbinding.AutoBinding.UpdateStrategy;
import org.jdesktop.swingbinding.JTableBinding;
import org.jdesktop.swingbinding.SwingBindings;

public class SampleFrame extends JFrame {

  private JTable userTable = new JTable();
  private JButton searchButton = new JButton("検索");

  public SampleFrame() {

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(new JScrollPane(this.userTable), BorderLayout.CENTER);
    this.getContentPane().add(this.searchButton, BorderLayout.SOUTH);
    this.setBounds(0, 0, 200, 150);

    searchButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        setTableData();
      }
    });
  }

  private void setTableData() {

    try {
      Connection conn = Dbcp.getInstance().getConnection();
      try {
        UserDao dao = new UserDao(conn);
        List<User> list = dao.selectAll();

        JTableBinding binding = SwingBindings.createJTableBinding(UpdateStrategy.READ, list, this.userTable);
        binding.addColumnBinding(BeanProperty.create("id")).setColumnName("Id").setColumnClass(Integer.class);
        binding.addColumnBinding(BeanProperty.create("name")).setColumnName("Name");
        binding.bind();
      }
      finally {
        conn.close();
      }
    }
    catch (Throwable t) {
      t.printStackTrace();
    }
  }

  public static void main(String[] args) {
    SampleFrame frame = new SampleFrame();
    frame.setVisible(true);
  }
}


Beans Bindingライブラリで、UserDaoで取得したListをJTableにバインドさせて表示しています。
なんだか.NETみたいで便利です。
Beans Bindingライブラリは、ココからダウンロードしました。

 JTableBinding binding = SwingBindings.createJTableBinding(UpdateStrategy.READ, list, this.userTable);
 binding.addColumnBinding(BeanProperty.create("id")).setColumnName("Id").setColumnClass(Integer.class);
 binding.addColumnBinding(BeanProperty.create("name")).setColumnName("Name");
 binding.bind();