DbUnit?とは・・・http://dbunit.sourceforge.net/
適当に参考にしてください
import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import org.dbunit.Assertion; import org.dbunit.DatabaseTestCase; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.SortedTable; import org.dbunit.dataset.excel.XlsDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; /** * このテストで使用するテーブル * * create table test ( * id number(2), * name varchar(20) * ); * create table test2 ( * id number(2), * name varchar(20) * ); * */ public class HelloDbUnit extends DatabaseTestCase { /** * コネクションの取得(必須) */ protected IDatabaseConnection getConnection() throws Exception { String JDBC_NAME = "oracle.jdbc.driver.OracleDriver"; String URL = "jdbc:oracle:thin:@localhost:1521:testdb"; String USER_NAME = "moke"; String PASSWORD = "moke"; Class.forName(JDBC_NAME); Connection jdbcConnection = DriverManager.getConnection(URL, USER_NAME, PASSWORD); return new DatabaseConnection(jdbcConnection); } /** * 初期データ挿入(必須) */ protected IDataSet getDataSet() throws Exception { return new FlatXmlDataSet( new FileInputStream("src\\test\\database.xml")); } /** * XMLバージョン1 * 初期化で入れたデータを表示するだけ * @throws Exception */ public void gtest001() throws Exception { Connection con = getConnection().getConnection(); ResultSet rs = con.createStatement().executeQuery("select * from TEST"); while (rs.next()) { System.out.println( rs.getString("ID") + ", " + rs.getString("NAME")); } } /** * XMLバージョン2 * 初期化のデータを新しいデータで上書きしてからテスト * @throws Exception */ public void gtest002() throws Exception { // 新しくデータを入れる IDataSet dataSet = new FlatXmlDataSet(new FileInputStream("src\\test\\database2.xml")); DatabaseOperation.CLEAN_INSERT.execute(getConnection(), dataSet); Connection con = getConnection().getConnection(); ResultSet rs = con.createStatement().executeQuery("select * from TEST"); while (rs.next()) { System.out.println( rs.getString("ID") + ", " + rs.getString("NAME")); } // DBから実際のデータを取得 IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("TEST"); // XMLファイルから期待値を取得 IDataSet expectedDataSet = new FlatXmlDataSet(new FileInputStream("expect.xml")); // [NULL] を null に置き換え ReplacementDataSet expectedDSReplaced = new ReplacementDataSet(expectedDataSet); expectedDSReplaced.addReplacementObject("[NULL]", null); // 余計なカラムをマッチングさせないようにする ITable expectedTable = expectedDSReplaced.getTable("TEST"); actualTable = new CompositeTable(expectedTable.getTableMetaData(), actualTable); // 順番をそろえてマッチング Assertion.assertEquals( new SortedTable(expectedTable), new SortedTable(actualTable, expectedTable.getTableMetaData())); } /** * EXCELバージョン!! * @throws Exception */ public void gtest003() throws Exception { // 新しくデータを入れる IDataSet dataSet = new XlsDataSet(new FileInputStream("src\\test\\database.xls")); DatabaseOperation.CLEAN_INSERT.execute(getConnection(), dataSet); Connection con = getConnection().getConnection(); ResultSet rs = con.createStatement().executeQuery("select * from TEST"); while (rs.next()) { System.out.println( "[TEST] " + rs.getString("ID") + ", " + rs.getString("NAME")); } rs = con.createStatement().executeQuery("select * from TEST2"); while (rs.next()) { System.out.println( "[TEST2] " + rs.getString("ID") + ", " + rs.getString("NAME") + " : " + (rs.getString("NAME") == null)); } } /** * XMLバージョン3 * 初期化のデータを新しいデータで上書きしてからテスト * 実行結果をXMLでマッチング * @throws Exception */ public void test004() throws Exception { // 新しくデータを入れる IDataSet dataSet = new FlatXmlDataSet(new FileInputStream("src\\test\\database2.xml")); DatabaseOperation.CLEAN_INSERT.execute(getConnection(), dataSet); // Fetch database data after executing your code IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("TEST"); // Load expected data from an XML dataset IDataSet expectedDataSet = new FlatXmlDataSet(new FileInputStream("src\\test\\database2.xml")); ITable expectedTable = expectedDataSet.getTable("TEST"); // Assert actual database table match expected table Assertion.assertEquals( new SortedTable(expectedTable), new SortedTable(actualTable, expectedTable.getTableMetaData())); } }
<?xml version="1.0" encoding="UTF-8"?> <dataset> <TEST id="1" name="てすとん" /> <TEST id="2" name="どうよ?" /> <TEST id="3" name="もけもけ" /> </dataset>
※1行目にないカラムは2行目以降セットしてくれない?
<?xml version="1.0" encoding="UTF-8"?> <dataset> <!-- これだとダメっぽい・・・ --> <!-- id=2,3 の name が格納されない・・・ --> <TEST id="1" /> <TEST id="2" name="どうよ?" /> <TEST id="3" name="もけもけ" /> </dataset>
Linux
サーバ構築
Windows
Java
Program