Guest User

Untitled

a guest
May 1st, 2012
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. package dbunitsample;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.net.MalformedURLException;
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.SQLException;
  11.  
  12. import org.dbunit.Assertion;
  13. import org.dbunit.DatabaseUnitException;
  14. import org.dbunit.database.AmbiguousTableNameException;
  15. import org.dbunit.database.DatabaseConnection;
  16. import org.dbunit.database.IDatabaseConnection;
  17. import org.dbunit.database.QueryDataSet;
  18. import org.dbunit.dataset.DataSetException;
  19. import org.dbunit.dataset.IDataSet;
  20. import org.dbunit.dataset.ITable;
  21. import org.dbunit.dataset.xml.FlatXmlDataSet;
  22. import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
  23. import org.dbunit.operation.DatabaseOperation;
  24. import org.junit.After;
  25. import org.junit.Before;
  26. import org.junit.Test;
  27.  
  28.  
  29. public class MembersTest {
  30.  
  31. private String testDataDir = "test_data";
  32.  
  33.  
  34. private Connection getMyConnection() throws ClassNotFoundException, SQLException{
  35. Class.forName("com.ibm.db2.jcc.DB2Driver");
  36.  
  37. return DriverManager.getConnection(
  38. "jdbc:db2://localhost:50000/SAMPLE"
  39. , "db2inst1"
  40. , "password"
  41. );
  42. }
  43.  
  44.  
  45. private IDataSet readDataSetFromXMLFile(String path) throws MalformedURLException, DataSetException{
  46. return new FlatXmlDataSetBuilder().build(new File(path));
  47. }
  48.  
  49.  
  50. private void escapeTable(String tableName, String path)
  51. throws DatabaseUnitException, AmbiguousTableNameException,
  52. IOException, DataSetException, FileNotFoundException,
  53. ClassNotFoundException, SQLException {
  54. Connection con = getMyConnection();
  55. File file = new File(path); // プロジェクトのルートからのパスで作成
  56.  
  57. QueryDataSet queryDataSet = new QueryDataSet(new DatabaseConnection(con));
  58. queryDataSet.addTable(tableName);
  59. FlatXmlDataSet.write(queryDataSet, new FileOutputStream(file));
  60. }
  61.  
  62.  
  63. @Before
  64. public void setUp() throws Exception {
  65. // テーブルのデータを退避
  66. escapeTable("MEMBERS", testDataDir + "/escaped_members.xml" );
  67. }
  68.  
  69.  
  70. @After
  71. public void tearDown() throws Exception {
  72. IDataSet dataSet = readDataSetFromXMLFile( testDataDir + "/escaped_members.xml");
  73. Connection con = getMyConnection();
  74.  
  75. // テーブルのデータをすべて削除して退避したデータを戻す
  76. DatabaseOperation.CLEAN_INSERT.execute(new DatabaseConnection(con), dataSet);
  77.  
  78. con.close();
  79. }
  80.  
  81.  
  82. @Test
  83. public void testUpdate() throws DatabaseUnitException, SQLException, FileNotFoundException, ClassNotFoundException, MalformedURLException{
  84. Connection con = null;
  85. IDatabaseConnection dbcon = null;
  86. try{
  87. con = getMyConnection();
  88. dbcon = new DatabaseConnection(con);
  89.  
  90. // テストデータをロード
  91. IDataSet testDataSet = readDataSetFromXMLFile(testDataDir
  92. + "/test_update.xml");
  93.  
  94. // テーブルのデータを全て消去+テストデータ投入
  95. DatabaseOperation.CLEAN_INSERT.execute(dbcon, testDataSet);
  96.  
  97. // 更新処理(テスト対象のメソッド)
  98. new Memebers().update();
  99.  
  100. // 期待値データをロード
  101. IDataSet expectedDataSet = readDataSetFromXMLFile(testDataDir
  102. + "/test_update_expected.xml");
  103. ITable expectedTable = expectedDataSet.getTable("MEMBERS");
  104.  
  105. // DBのテーブルからデータを取得
  106. IDataSet actualDataSet = dbcon.createDataSet();
  107. ITable actualTable = actualDataSet.getTable("MEMBERS");
  108.  
  109. // 期待値と実際の値を比較
  110. Assertion.assertEquals(expectedTable, actualTable);
  111.  
  112. } finally {
  113. if (dbcon != null) {
  114. dbcon.close();
  115. }
  116. if (con != null) {
  117. con.close();
  118. }
  119. }
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment