■ 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.jardbunit
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; } }
参考文献
https://codezine.jp/article/detail/8214http://muimi.com/j/test/dbunit/
http://www.aksystem.jp/computer/FamousDBUnit/FamousDBUnit.htm
https://donow.jp/skillup/?p=924
* 設定環境
http://javaworld.helpfulness.jp/post-60/