亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > DBunit
Spring+iBatis+DBUnit 進(jìn)行單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/24 13:43:59 ] 推薦標(biāo)簽:單元測(cè)試 開源 測(cè)試

現(xiàn)在我們把DatabaseTestCase替換成DBTestCase,并且注釋掉HelloDBUnit中重載的getConnection(不再需要了,父類DBTestCase中已經(jīng)實(shí)現(xiàn)了該方法。)然后執(zhí)行,我們又遇到一個(gè)異常:

org.dbunit.AbstractDatabaseTester$AssertionFailedError:driverClass is null

這是因?yàn)镻ropertiesBasedJdbcDatabaseTester的initialize方法(見上面代碼)用來初始化數(shù)據(jù)庫連接參數(shù):

protected void initialize() throwsException
{
   logger.debug("initialize() - start");
   setDriverClass(System.getProperty(DRIVER_CLASS));
   setConnectionUrl(System.getProperty(CONNECTION_URL));
   setUsername(System.getProperty(USERNAME));
   setPassword(System.getProperty(PASSWORD));
   // 如果所用測(cè)試帳戶是 DBA,為了避免出現(xiàn) AmbiguousTableNameException
   // 異常,必須明確給出 SCHEMA。注意 SCHEMA要大寫**
   // setSchema(System.getProperty(SCHEMA));
   super.initialize();
}

從這里我們看到DBTestCase需要從系統(tǒng)變量中獲得連接參數(shù),所以我們必須修改HelloDBUnit的構(gòu)造函數(shù),將配置參數(shù)讀入系統(tǒng)變量:

public HelloDBUnit() throws IOException
{
   super();
      props.load(Resources.getResourceAsStream("database.properties"));
      if(null == context)
      {
         context = new ClassPathXmlApplicationContext(
            "classpath:ApplicationContext.xml");
      }
   System.setProperty(
      PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS,
      props.getProperty("database.connection.driver_class"));
   System.setProperty(
      PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL,
      props.getProperty("database.connection.url"));
   System.setProperty(
      PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME,
      props.getProperty("database.connection.username"));
   System.setProperty(
      PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD,
      props.getProperty("database.connection.password"));
}

現(xiàn)在可以正確執(zhí)行了。不過,這依然存在遺憾,既然我們使所有配置參數(shù)都文本化了,不希望看到

   System.setProperty(
      PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS,
      props.getProperty("database.connection.driver_class"));

這樣的代碼,因?yàn)槿绻覀冇卸鄠(gè)數(shù)據(jù)源,或改變了配置文件,我們不得不還需要改變測(cè)試用例的代碼?梢杂肈ataSourceBasedDBTestCase 來解決這個(gè)問題。

DataSourceBasedDBTestCase類
DataSourceBasedDBTestCase 抽象類要求子類實(shí)現(xiàn) getDataSource 方法以獲取外部數(shù)據(jù)源。

首先,改變父類為 DataSourceBasedDBTestCase 。然后移除構(gòu)造函數(shù)中關(guān)于系統(tǒng)變量的設(shè)置。后加入以下代碼:

@Override
protected DataSource getDataSource(){
   return(DataSource)context.getBean("dataSource");
}

org.dbunit.database.AmbiguousTableNameException異常
** 很遺憾, DataSourceBasedDBTestCase 沒有提供設(shè)置 SCHEMA 的方法,雖然它的成員變量 DataSourceBasedDBTester 通過繼承了 AbstractDatabaseTester 而提供了 setSchema 方法,但是因?yàn)樗械?IDatabaseTester 都是 Private 變量,因此實(shí)際上我們無法訪問到它的 setSchema。所以如果使用 DataSourceBasedDBTestCase ,除非重載 setUp 和tearDown方法,否則不能有DBA權(quán)限。

上一頁12345678下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 久久精品免视看国产成人2021 | 伊人精品在线观看 | 午夜国产在线 | 另类小说第一草 | 国产精品亚洲片在线牛牛影视 | 性生活一区 | 亚洲伦理一区二区 | 成年黄网站 | 最近高清中文字幕大全1 | 一级黄色夫妻 | 日韩欧美视频免费观看 | 日日夜夜天天干干 | 99精品视频在线视频免费观看 | 全网毛片免费| sss欧美华人整片在线观看 | 欧美一级二级三级视频 | 国产精品v一区二区三区 | 午夜极品 | 18一20岁一级毛片 | 曰批视频在线观看 | 天堂网视频在线观看 | 日韩欧美一区二区三区免费观看 | 成人性a激情免费视频 | 亚洲图片视频在线观看 | 亚洲三级免费 | 国产免费久久精品99 | 亚洲本道 | 全黄一级裸片视频在线观看 | 在线观看成人免费 | 成人在线免费视频观看 | 成人理论片 | 羞羞影院男女午夜爽爽影视 | 中文字幕制服 | 中文字幕日韩精品中文区 | 欧美极品欧美精品欧美视频 | 亚洲美女中文字幕 | 日本亚洲欧美国产日韩ay高清 | 日韩在线视频不卡一区二区三区 | 国产免费看网站v片不遮挡 国产免费黄视频 | 欧美日本道免费一区二区三区 | 香港aa三级久久三级不卡 |