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
なんだか.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();