org.apache.commons.lang.time.DateUtils.paraseDate(String sDate,String[] parasePatterns);
- String[] pattern = new String[]{"yyyy-MM","yyyyMM","yyyy/MM",
- "yyyyMMdd","yyyy-MM-dd","yyyy/MM/dd",
- "yyyyMMddHHmmss",
- "yyyy-MM-dd HH:mm:ss",
- "yyyy/MM/dd HH:mm:ss"};
- DateUtils.parseDate(date, pattern);
DBUnitにさわった時のメモ
必要なJarファイル
asm-3.0.jar bcel-5.2.jar commons-beanutils.jar commons-lang.jar commons-logging.jar dbunit-2.2.3-javadoc.jar dbunit-2.2.3-sources.jar dbunit-2.2.3.jar djunit.jar ibatis-2.3.0.677.jar jakarta-oro-2.0.7.jar jcoverage-djunit-1.0.5.jar junit-4.4.jar log4j.jar ojdbc14.jar slf4j-api-1.5.2.jar slf4j-log4j12-1.5.2.jar
基底テストケースクラス
package examples.dao; import java.sql.Connection; import java.sql.DriverManager; import java.util.ResourceBundle; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.junit.After; import org.junit.Before; public class DbTest { private IDatabaseConnection con = null; @Before public void setUp() throws Exception { // IDatabaseConnection con = getConnection(); // // 現状のバックアップを取得 // QueryDataSet partialDataSet = new QueryDataSet(con); // partialDataSet.addTable("SAMPLE01", "SELECT * FROM SAMPLE01"); // System.out.println(Arrays.toString(partialDataSet.getTableNames())); // File file = new File("db.xml"); // FlatXmlDataSet.write(partialDataSet, new FileOutputStream(file)); } @After public void tearDown() throws Exception { if (con != null) { con.close(); } } public IDatabaseConnection getConnection() throws Exception { if (con == null) { ResourceBundle bundle = ResourceBundle.getBundle("jdbc"); String driver = bundle.getString("jdbc.driver"); Class.forName(driver); Connection connection = DriverManager.getConnection(bundle .getString("jdbc.url"), bundle.getString("jdbc.user"), bundle.getString("jdbc.password")); String schema = bundle.getString("jdbc.user").toUpperCase(); con = new DatabaseConnection(connection, schema); } return con; } }
テストケースクラス
package examples.dao; import static org.junit.Assert.assertNotNull; import java.io.InputStream; import java.sql.Timestamp; import java.util.Arrays; import java.util.Date; import org.apache.commons.lang.time.DateUtils; import org.dbunit.Assertion; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; import org.junit.After; import org.junit.Before; import org.junit.Test; import examples.dto.Sample01; public class Sample01DaoTest extends DbTest { private Sample01Dao dao; @Before public void setUp() throws Exception { IDatabaseConnection con = getConnection(); InputStream in = Sample01DaoTest.class .getResourceAsStream("dataset.xml"); IDataSet dataSet = new FlatXmlDataSet(in); String[] tableNames = dataSet.getTableNames(); System.out.println(Arrays.toString(tableNames)); DatabaseOperation.CLEAN_INSERT.execute(con, dataSet); dao = new Sample01Dao(); } @After public void tearDown() throws Exception { super.tearDown(); } @Test public void testFindByPk() throws Throwable { Sample01 obj = dao.findByPk(1); System.out.println(obj); assertNotNull(obj); } @Test public void testInsert() throws Throwable { Date date = DateUtils.parseDate("2008-07-01", new String[] { "yyyy-MM-dd" }); Sample01 obj = new Sample01(); obj.setId(999); obj.setColChar("char"); obj.setColVarchar2("varchar2"); obj.setColNumber(9); obj.setColDate(date); obj.setColTimestamp(new Timestamp(date.getTime())); dao.insert(obj); // DBから実際のデータの取得 IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("SAMPLE01"); // 期待値データの取得 IDataSet expectedDataSet = new FlatXmlDataSet(Sample01DaoTest.class .getResourceAsStream("dataset-insert.xml")); ITable expectedTable = expectedDataSet.getTable("SAMPLE01"); // 期待値と実際のデータの比較 Assertion.assertEquals(expectedTable, actualTable); } @Test public void testDelete() throws Throwable { Sample01 obj = new Sample01(); obj.setId(1); dao.delete(obj); // DBから実際のデータの取得 IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("SAMPLE01"); // 期待値データの取得 IDataSet expectedDataSet = new FlatXmlDataSet(Sample01DaoTest.class .getResourceAsStream("dataset-delete.xml")); ITable expectedTable = expectedDataSet.getTable("SAMPLE01"); // 期待値と実際のデータの比較 Assertion.assertEquals(expectedTable, actualTable); } @Test public void testUpdate() throws Throwable { Sample01 obj = new Sample01(); obj.setId(1); obj.setColChar("XXX"); dao.update(obj); // DBから実際のデータの取得 IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("SAMPLE01"); // 期待値データの取得 IDataSet expectedDataSet = new FlatXmlDataSet(Sample01DaoTest.class .getResourceAsStream("dataset-update.xml")); ITable expectedTable = expectedDataSet.getTable("SAMPLE01"); // 期待値と実際のデータの比較 Assertion.assertEquals(expectedTable, actualTable); } }
dataset.xml
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <sample01 id="1" col_char="XXXX1" col_varchar2="XXXXXXXXX1" col_number="1" col_date="2008-07-01" col_timestamp="2008-07-01 00:00:00.000000000" /> <sample01 id="2" col_char="XXXX2" col_varchar2="XXXXXXXXX2" col_number="2" col_date="2008-07-02" col_timestamp="2008-07-02 00:00:00.000000000" /> </dataset>
dataset-insert.xml
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <sample01 id="1" col_char="XXXX1" col_varchar2="XXXXXXXXX1" col_number="1" col_date="2008-07-01" col_timestamp="2008-07-01 00:00:00.000000000" /> <sample01 id="2" col_char="XXXX2" col_varchar2="XXXXXXXXX2" col_number="2" col_date="2008-07-02" col_timestamp="2008-07-02 00:00:00.000000000" /> </dataset>