差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
study:java:dbunit:testdata [2020/05/20 06:06] – 作成 bananastudy:java:dbunit:testdata [2020/05/20 06:43] (現在) – [Restore table data] banana
行 1: 行 1:
 ====== Backup table data ====== ====== Backup table data ======
-あるテーブルに対して、transactionを行うクラスをテストする際、テーブルデータをバックアップする方法を紹介する。+あるテーブルに対して、transactionを行うクラスをテストする際、テーブルデータをバックアップする方法を紹介する。\\ 
 +ここで、紹介するテストクラスは、[[study:java:powermock:integation|Integration with TestNG]]で紹介した親クラスを継承していることを前提する。
  
 +以下に、ソースの一部分を示す
 +<code java>
 +public class TestSomeTableTransactionService extends AbstractCustomTestCase {
 +    //table backup file
 +    private File backupFile;
  
 +    /* (non-Javadoc)
 +     * @see parent.AbstractCustomTestCase#prepareSpecific()
 +     */
 +    @Override
 +    protected void prepareSpecific() throws Exception {
 +        IDatabaseConnection _connection = null;
 +        try {
 +            _connection = databaseTester.getConnection();
 +            //prepare backup file
 +            QueryDataSet _partialDataSet = new QueryDataSet(_connection);
 +            _partialDataSet.addTable("employee_mst");
 +            backupFile = File.createTempFile("foo", "xml");
 +            //write table data to file
 +            FlatXmlDataSet.write(_partialDataSet, new FileOutputStream(backupFile));
 +
 +            //prepare test data
 +            FlatXmlDataSetBuilder _builder = new FlatXmlDataSetBuilder();
 +            InputStream _is = getClass().getResourceAsStream("testdata.xml");
 +            FlatXmlDataSet _dataSet = _builder.build(_is);
 +            //clean insert
 +            DatabaseOperation.CLEAN_INSERT.execute(_connection, _dataSet);
 +        } finally {
 +            if (_connection != null) _connection.close();
 +        }
 +    }
 +}
 +</code>
 +ここで、テストデータとしてtestdata.xmlを使用しているが、サンプルは次節で紹介する。
 +
 +====== Prepare test data ======
 +testdata.xmlを中身を下に示す。
 +
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<dataset>
 +<employee_mst
 + id="1"
 + first_name="太郎"
 + last_name="山田"
 +        birth="1980-04-01"
 + dept_id="001"
 + company="Ourparms corporations"
 + reg_date="2020-05-20 15:36:25"
 + reg_uid="test"
 + mod_date="2020-05-20 15:36:25"
 + mod_uid="test"
 +        delete_flag="0"
 +/>
 +</dataset>
 +
 +</code>
 +
 +====== Restore table data ======
 +テスト実施後、テーブルデータを元に復元するソースコードを以下に示す。
 +
 +<code java>
 +public class TestSomeTableTransactionService extends AbstractCustomTestCase {
 +    //table backup file
 +    private File backupFile;
 +
 +    /* (non-Javadoc)
 +     * @see parent.AbstractCustomTestCase#tearDownHook()
 +     */
 +    @Override
 +    protected void tearDownHook() throws Exception {
 +        IDatabaseConnection _connection = null;
 +        try {
 +            _connection = databaseTester.getConnection();
 +            //restore backup file
 +            FlatXmlDataSetBuilder _builder = new FlatXmlDataSetBuilder();
 +            IDataSet _dataSet = _builder.build(backupFile);
 +            DatabaseOperation.CLEAN_INSERT.execute(_connection, _dataSet);
 +        } finally {
 +            if (_connection != null) _connection.close();
 +        }
 +    }
 +
 +}
 +</code>

QR Code
QR Code study:java:dbunit:testdata (generated for current page)