Intellij IDEAでJava Servlet3.0の開発 – DBUnitのテストコード

Intellij IDEAでJava Servlet3.0の開発 – DBUnitのテストコード

MySQLからユーザー名を取得する、モデル UserBean.javaのテストの例。
DBUnitを継承したテストコード UserBeanDBTestCase.javaは、コンストラクタでDBとのコネクションを開き、getDataSet()でテスト用データのdataset.xmlをデータベースに読み込んでからテストを実行していく。

プロジェクト構成

 ── learnJava
    ├── dataset.xml
    ├── learnJava.iml
    ├── out
    ├── src
    │   ├── com
    │   │   └── learnJava
    │   │       └── bean
    │   │           └── UserBean.java
    │   └── test
    │       └── com
    │           └── learnJava
    │               └── bean
    │                   └── UserBeanDBTestCase.java
    └── web
        ├── WEB-INF
        │   ├── lib
        │   └── web.xml
        └── index.jsp

db.userテーブル

+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| user_id | mediumint(9) | NO | PRI | NULL | auto_increment |
| password | blob | NO | | NULL | |
| authority_code | int(11) | NO | | NULL | |
| user_name | varchar(16) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+

dataset.xml

<dataset>
<user authority_code="1" password="2222" user_id="1" user_name="桃太郎"></user>
</dataset>

UserBean.java


package com.learnJava.bean;

import java.sql.*;

/**
* ユーザSQLクラス
* ユーザテーブルの参照、更新するSQLオブジェクト
*
* @version Java 1.6.0_65
* @version Tomcat 7
* @since 2013.11.01
* Created with IntelliJ IDEA.
* User: bookair
* Date: 11/29/13
* Time: 12:58 AM
*/
public class UserBean {

private String userName;

/**
* ユーザ情報を取得
*/
public boolean getUser() throws Exception {
try {
/* JDBCドライバを登録 */
Class.forName("com.mysql.jdbc.Driver"); // MySQL

/* コネクションを開放 */
Connection conectMySQL = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/learnJava", "root", ""); // MySQL;

/* SQLの実行 (参照) */
Statement statement = conectMySQL.createStatement();
String sql = "SELECT user_name FROM user LIMIT 1";
ResultSet resultSet = statement.executeQuery(sql);

/* クエリの結果を取得 */
while (resultSet.next()) {
this.setUserName(resultSet.getString("user_name"));;
}

/* コネクションを閉じる */
resultSet.close();
statement.close();
conectMySQL.close();

/* 例外処理 */
} catch (SQLException se) {
se.printStackTrace(); // SQLエラー
return false;
} catch (Exception e) {
e.printStackTrace(); // ドライバエラー
return false;
}
return true;
}

/**
* ユーザ名
*/
public void setUserName(String userName) {
this.userName = userName;
}

public String getUserName() {
return userName;
}
}

UserBeanDBTestCase.java

package test.com.learnJava.bean;

import com.learnJava.bean.UserBean;
import org.dbunit.*;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import java.io.FileInputStream;

/**
* ユーザデータベーステストクラス
* see http://www.dbunit.org/howto.html#noextend
*/
public class UserBeanDBTestCase extends DBTestCase
{
/**
* コンストラクタ
*/
public UserBeanDBTestCase()
{
super();
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "com.mysql.jdbc.Driver" );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:mysql://localhost:3306/learnJava" );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "root" );
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "" );
// System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "" );
}

/**
* テストデータをセット
*/
protected IDataSet getDataSet() throws Exception
{
return new FlatXmlDataSetBuilder().build(new FileInputStream("dataset.xml"));
}

/**
* テストユーザ名
*/
public void testGetUser() throws Exception{
UserBean userBean = new UserBean(); //インスタンス生成
userBean.getUser();
assertEquals("テスト結果:桃太郎", "テスト結果:" + userBean.getUserName());
}
}

以上、ご参考までで

About the author
  • コメントを残す