====== Backup table data ====== あるテーブルに対して、transactionを行うクラスをテストする際、テーブルデータをバックアップする方法を紹介する。\\ ここで、紹介するテストクラスは、[[study:java:powermock:integation|Integration with TestNG]]で紹介した親クラスを継承していることを前提する。 以下に、ソースの一部分を示す 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(); } } } ここで、テストデータとしてtestdata.xmlを使用しているが、サンプルは次節で紹介する。 ====== Prepare test data ====== testdata.xmlを中身を下に示す。 ====== Restore table data ====== テスト実施後、テーブルデータを元に復元するソースコードを以下に示す。 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(); } } }