<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 32,comments - 75,trackbacks - 0

    DbUnit是一個可以讓我們在測試開始前初始化我們的數(shù)據(jù)庫,例如準(zhǔn)備我們的數(shù)據(jù),然后在測試結(jié)束后也可以回滾我們的數(shù)據(jù)庫(不是自動進(jìn)行的,需要手工編碼),dbUnit的結(jié)構(gòu)基于Jnit,簡單的使用必須要繼承DatabaseTestCase類,但是我們可以使用編碼的方法調(diào)用他,完全可以在Spring環(huán)境下使用,然后在TestNG中調(diào)用。

    我寫了一個DbunitTemplate類做了一個小小的封裝。

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.sql.SQLException;

     

    import org.apache.commons.dbcp.BasicDataSource;

    import org.dbunit.DatabaseUnitException;

    import org.dbunit.database.DatabaseConnection;

    import org.dbunit.database.IDatabaseConnection;

    import org.dbunit.dataset.IDataSet;

    import org.dbunit.dataset.xml.FlatXmlDataSet;

    import org.dbunit.operation.DatabaseOperation;

     

    public class DBUnitTemplate {

     

        private BasicDataSource dataSource;

       

        private IDatabaseConnection connection;

       

        public DBUnitTemplate(){

           

        }

        public void setDataSource(BasicDataSource dataSource) throws SQLException {

       

            this.dataSource = dataSource;

    //”schema”是你數(shù)據(jù)庫的schema的名字,試驗(yàn)的時候老是拋出AmbiguousTableNameException,后來在Dbunit的官方FAQ中找到,必須要用schema,而且如果你用的Oracle,必須要大寫

            connection = new DatabaseConnection(this.dataSource.getConnection(),"schema");

        }

     

        public void execute(String path,DatabaseOperation oper) throws FileNotFoundException, IOException, DatabaseUnitException, SQLException{

            IDataSet dataset = new FlatXmlDataSet(new FileInputStream(path));

            oper.execute(connection,dataset);

        }

    }

    然后在Spring文件中配置它

    <bean id="dbUnitTemplate" class="DBUnitTemplate">

            <property name="dataSource">

            <ref bean="dataSource"/>

            </property>

        </bean>

     

        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

            <property name="driverClassName">

                <value>${jdbc.driverClassName}</value>

            </property>

            <property name="url">

                <value>${jdbc.url}</value>

            </property>

            <property name="username">

                <value>${jdbc.username}</value>

            </property>

            <property name="password">

                <value>${jdbc.password}</value>

            </property>

            <property name="maxActive">

                <value>${maxActive}</value>

            </property>

            <property name="maxWait">

                <value>${maxWait}</value>

            </property>

            <property name="maxIdle">

                <value>${maxIdle}</value>

            </property>

    </bean>

    只要將dataSource注入到DBUnitTemplate中就可以了

     

    然后我們就可以在TestNG的配置方法中對數(shù)據(jù)庫進(jìn)行操作了

    public class TestDAO {

       

        @Configuration(beforeTestMethod=true)

    public void configDB()

    throws FileNotFoundException, IOException, DatabaseUnitException, SQLException{

        

         //得到Spring容器,TestConfiguration是自己寫的在測試開始前初始化Spring容器的類

         ApplicationContext context = TestConfiguration.getContext();

         //從容器中得到DBUnitTemplate

         DBUnitTemplate dbtemp =

                       (DBUnitTemplate)context.getBean(“dbUnitTemplate”);

         //執(zhí)行數(shù)據(jù)庫操作,下面將DataSet中的數(shù)據(jù)插入到數(shù)據(jù)庫中

        dbtemp.execute("dataset.xml",--------à你的DataSet的路徑

                  DatabaseOperation.INSERT); --------à你要執(zhí)行的操作,常用的幾種(INSERTDELETEUPDATECLEAN_INSERT,SELETE_ALL

        }

       

        @Test

        public void test(){

            //下面可以測試你的類了

        }

    }

    應(yīng)該比較簡單了,另外Spring容器本身就是要啟動的,并不會造成額外的負(fù)擔(dān),這樣就不要硬編碼連接數(shù)據(jù)庫了,但是DBUnit還是讓人不是很滿意

    1.  DataSet的管理還是很煩,并不比管理sql語句好多少

    2.  沒法查詢數(shù)據(jù)庫,我的想法是如果我在測試中對數(shù)據(jù)庫做了某項(xiàng)操作,(例如新增或刪除),可以被detect到,然后判斷和我預(yù)期的結(jié)果是不是一致。

    可是沒辦法,也沒有別的工具好用的。
    posted on 2005-12-31 12:27 fanta 閱讀(6154) 評論(2)  編輯  收藏 所屬分類: Java

    FeedBack:
    # re: 在Spring環(huán)境下結(jié)合TestNG使用DbUnit
    2007-03-06 14:18 | peixubin
    可以用sqlunit來作啊  回復(fù)  更多評論
      
    # re: 在Spring環(huán)境下結(jié)合TestNG使用DbUnit
    2010-09-14 15:35 | 咖啡茶
    您好!我使用dbunit導(dǎo)出的中文是& #23567;& #24352;的形式,請問您怎么解決?(&和#中間我加入了空格,防止頁面自動轉(zhuǎn)換)  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲va久久久噜噜噜久久天堂| 四虎免费久久影院| 色拍自拍亚洲综合图区| 成人性生交大片免费看好| 日韩亚洲一区二区三区| a级黄色毛片免费播放视频| 国产亚洲婷婷香蕉久久精品| a毛片全部播放免费视频完整18| 中文字幕精品无码亚洲字| 男女一边桶一边摸一边脱视频免费| 亚洲精品国产精品乱码不卡| 黄床大片30分钟免费看| 亚洲乱码国产一区网址| 精选影视免费在线 | 亚洲福利视频导航| 亚洲免费视频观看| 亚洲精品无码专区| 亚洲精品tv久久久久| 中文字幕免费在线播放| 亚洲一区免费观看| 岛国大片免费在线观看| 色视频在线观看免费| 亚洲香蕉成人AV网站在线观看| 久草免费福利视频| 亚洲xxxxxx| 亚洲国产精品综合久久网络| 久久久久国色AV免费观看| 亚洲人成电影亚洲人成9999网| 国产一卡2卡3卡4卡2021免费观看| 一级视频在线免费观看| 亚洲熟妇av一区二区三区| 亚洲免费在线视频观看| 午夜亚洲国产理论片二级港台二级| 亚洲天堂中文字幕在线| 色欲色香天天天综合网站免费| 亚洲av无码片区一区二区三区| 国产精品麻豆免费版| 久久免费视频观看| 亚洲精品无码久久| 国产成A人亚洲精V品无码 | 中文日本免费高清|