【JUnit】 DbUnit ~ 入門編 ~

JavaでのDBにまつわる単体試験

以下のツールがある

[1] DbUnit ★今回はこっちを取り上げる★
[2] DbSetup / AssertJ-DB
* DbSetupについては、以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36156793.html
* AssertJ-DBについては、以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36157721.html

DbUnit

主な機能

1) データのインポート/エクスポート
2) データの検証

公式サイト

http://dbunit.sourceforge.net/
http://dbunit.sourceforge.net/dependency-info.html

■ 設定

各サイトから以下のJARファイルを取得し、インポートしておく

 + dbunit-2.4.9.jar
 * slf4j-1.7.21.zip
  + slf4j-nop-1.7.21.jar
  + slf4j-api-1.7.21.jar
 * poi-bin-3.14.zip
  + poi-3.14-20160307.jar
dbunit
https://sourceforge.net/projects/dbunit/files/
slf4j
http://javaworld.helpfulness.jp/post-60/
Apachi POI
http://poi.apache.org/download.html

■ サンプル

環境

 * Windows10
 * Java1.8
 * Eclipse Mars.2 Release (4.5.2)
 * MySQL
 * DB Unit (dbunit-2.4.9.jar)

サンプルデータ:MySQL

CREATE TABLE person
(
  id char(8) NOT NULL PRIMARY KEY,
  name varchar(100),
  sex char(1)
);

INSERT INTO person(
            id, name, sex)
    VALUES ('X0000000', 'admin', 'm'),
           ('X0000001', 'Mike', 'm'),
           ('X0000002', 'Tom', 'm');
           
select * from person;

テスト対象クラス : TargetSample.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class TargetSample {

//  public static void main(String[] args) throws Exception {
//    for (Person person : getAllPeople()) {
//      System.out.println("***************************");
//      System.out.println("person.id : " + person.id);
//      System.out.println("person.name : " + person.name);
//      System.out.println("person.sex : " + person.sex);
//    }
//  }

  public static List<Person> getAllPeople() throws Exception {
    Class.forName("com.mysql.jdbc.Driver");
    List<Person> returnValues = new ArrayList<Person>();
    try (
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root", "password");
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT * FROM person");) {

      while (resultSet.next()) {
        Person person = new Person();
        person.id = resultSet.getString("id");
        person.name = resultSet.getString("name");
        person.sex = resultSet.getString("sex");
        returnValues.add(person);
      }
    }
    return returnValues;
  }
}


関連記事

DbSetup ~ 入門編 ~

http://blogs.yahoo.co.jp/dk521123/36156793.html

AssertJ / AssertJ-DB ~ 入門編 ~

http://blogs.yahoo.co.jp/dk521123/36157721.html