差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:dbunit:testdata [2020/05/20 06:13] – Create all page 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]]で紹介した親クラスを継承していることを前提する。 ここで、紹介するテストクラスは、[[study:java:powermock:integation|Integration with TestNG]]で紹介した親クラスを継承していることを前提する。
  
行 6: 行 6:
 <code java> <code java>
 public class TestSomeTableTransactionService extends AbstractCustomTestCase { public class TestSomeTableTransactionService extends AbstractCustomTestCase {
- //table backup file +    //table backup file 
- private File backupFile;+    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(); 
 +        } 
 +    }
  
- /* (non-Javadoc) 
- * @see parent.AbstractCustomTestCase#prepareSpecific() 
- */ 
- @Override 
- protected void prepareSpecific() throws Exception { 
- IDatabaseConnection _connection = null; 
- } 
 } }
 </code> </code>

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