waterye

          高效使用dbunit

          dbunit: DbUnit is a JUnit extension (also usable with Ant) targeted for database-driven projects

          official site, 好久沒更新了, 最新版本2.1還是2004年5月的

          1. use ant task

          <taskdef classpathref="project.classpath" classname="org.dbunit.ant.DbUnitTask" name="dbunit" />

           導出數據

          <target name="export">
          <dbunit password="${database.password}" userid="${database.userid}" 
             url
          ="${database.url}" driver="${database.driver}" supportbatchstatement="true">
          <export format="xml" dest="data/export-data.xml">
                
          <query name="FOO" sql="SELECT COL1, COL2 FROM FOO WHERE COL1=4"/>
                
          <table name="BAR"/> 
          </export>
          </dbunit>
          </target>

          tip: 不指定query、table, 導出所有的table

          導入數據

          <target name="clean_insert">
          <dbunit password="${database.password}" userid="${database.userid}" 
             url
          ="${database.url}" driver="${database.driver}">
             
          <operation format="xml" src="data/init-data.xml" type="CLEAN_INSERT" />
          </dbunit>
          </target>

          tip:
          type: UPDATE, INSERT, DELETE, DELETE_ALL, REFRESH,
                MSSQL_INSERT, MSSQL_REFRESH, MSSQL_CLEAN_INSERT.

          比較數據

          <target name="compare">
          <dbunit password="${database.password}" userid="${database.userid}" 
             url
          ="${database.url}" driver="${database.driver}">
             
          <compare format="xml" src="data/init-data.xml" />
          </dbunit>
          </target>

          2. use code

          導出數據

          IDatabaseConnection conn = new DatabaseConnection(jdbcConnection, schema); // oracle指定schema
          IDataSet dataSet = conn.createDataSet();
          XmlDataSet.write(dataSet, 
          new FileOutputStream("export-data.xml")); // xml file
          FlatXmlDataSet.write(dataSet,new FileOutputStream("export-data.xml")); // flat xml file
          XlsDataSet.write(dataSet,new FileOutputStream("export-data.xls")); // xls file
          FlatDtdDataSet.write(dataSet,new FileOutputStream("export-data.dtd")); // dtd file
          CsvDataSetWriter.write(dataSet, new File("export-data-csv")); // csv file

          使用DatabaseSequenceFilter, 解決違反外鍵約束的問題

          IDatabaseConnection conn = new DatabaseConnection(jdbcConnection);
          ITableFilter filter 
          = new DatabaseSequenceFilter(conn);
          // ITableFilter filter = new DatabaseSequenceFilter(conn, tableNames);
          IDataSet dataset = new FilteredDataSet(filter, conn.createDataSet());
          XmlDataSet.write(dataset, 
          new FileOutputStream("export-data.xml"));

          導入數據

          DatabaseOperation.REFRESH.execute(conn, dataSet);
          DatabaseOperation.INSERT.execute(conn, dataSet);

          刪除數據

          DatabaseOperation.DELETE.execute(conn, dataSet);

          比較數據

          IDatabaseConnection conn = new DatabaseConnection(jdbcConnection);
          Compare compare 
          = new Compare();
          compare.setFormat(
          "xml");
          compare.setSrc(
          new File("export-data.xml"));
          compare.execute(conn);

          tip: 使用assert進行比較, 作用不大
          code: Assertion.assertEquals(expectedTable, actualTable);

          3. QueryDataSet: use sql

          QueryDataSet queryDataSet = new QueryDataSet(conn);
          queryDataSet.addTable(
          "orders", ordersQuerySQL);

          posted on 2005-08-20 03:17 waterye 閱讀(1670) 評論(0)  編輯  收藏 所屬分類: OtherJava

          My Links

          Blog Stats

          News

          留言簿(7)

          隨筆檔案(175)

          最新隨筆

          搜索

          最新評論

          主站蜘蛛池模板: 贵港市| 博罗县| 遵化市| 寿宁县| 呼伦贝尔市| 甘南县| 同德县| 永年县| 滨州市| 班戈县| 融水| 霸州市| 兴城市| 肃宁县| 丹东市| 临西县| 科技| 麻栗坡县| 浪卡子县| 化州市| 瑞金市| 太仆寺旗| 密山市| 昂仁县| 都昌县| 锡林郭勒盟| 桐城市| 耿马| 荆门市| 孟连| 阳信县| 浪卡子县| 耒阳市| 凤翔县| 扶余县| 梧州市| 谢通门县| 九台市| 上蔡县| 胶南市| 平江县|