您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
基于JUnit使用Feed4JUnit實(shí)現(xiàn)數(shù)據(jù)與代碼分離
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/4/12 13:40:26 ] 推薦標(biāo)簽:

  圖 5. 數(shù)據(jù)表中的測試數(shù)據(jù)

  首先,創(chuàng)建測試類,添加 @Database 注釋并增加數(shù)據(jù)庫的連接信息,同時指定一個表示數(shù)據(jù)庫的 id,在測試方法的 @Source 中通過 id 進(jìn)行關(guān)聯(lián),并制定 selector 的語句進(jìn)行數(shù)據(jù)查詢,例如本例中的 selector = "select * from TEST",會從 TEST 表中取出全部數(shù)據(jù)用于測試,細(xì)節(jié)請參考以下代碼示例:

  清單 5 為在類上聲明 @Database。

package sample.test;

import static org.junit.Assert.assertEquals;

import org.databene.benerator.anno.Database;
import org.databene.benerator.anno.Source;
import org.databene.feed4junit.Feeder;
import org.junit.Test;
import org.junit.runner.RunWith;

import sample.code.UserAccess;

/*
 * Feed4JUnit - Get Data from Database, all test methods can use the database data
 */
@RunWith(Feeder.class)
@Database(
  id = "testdb",
  url = "jdbc:db2://localhost:50000/SAMPLE",
  driver = "com.ibm.db2.jcc.DB2Driver",
  user = "db2admin",
  password = "db2admin")
public class F4JfromDB {

 @Test
 @Source(id = "testdb", selector = "select * from TEST")
 public void testAccessCheck(String userName, String pw, String expected) {
  Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim());
  assertEquals(expected.trim(), bSucess.toString());

 }
}

  清單 6. 在方法上聲明 @Database
/*
 * Feed4JUnit - Get Data from Database,
 only the specified method can use the database data
 */

@RunWith(Feeder.class)
public class F4JfromDB_Method {
 @Test
 @Database(
   id = "testdb",
   url = "jdbc:db2://localhost:50000/SAMPLE",
   driver = "com.ibm.db2.jcc.DB2Driver",
   user = "db2admin",
   password = "db2admin")
 @Source(id = "testdb", selector = "select * from TEST")
 public void testAccessCheck(String userName, String pw, String expected) {
  Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim());
  assertEquals(expected.trim(), bSucess.toString());

 }
}

 

  測試運(yùn)行過程中,通過 url,driver 等信息建立數(shù)據(jù)連接,通過 selector 發(fā)出數(shù)據(jù)請求,后完成查詢并把數(shù)據(jù)傳遞給測試方法,數(shù)據(jù)在傳遞給方法的時候,會按數(shù)據(jù)表的列的順序與參數(shù)進(jìn)行匹配,運(yùn)行結(jié)果與圖 4 類似。

  自定義數(shù)據(jù)源

  除了 CSV,Excel 和數(shù)據(jù)庫的數(shù)據(jù)源外,F(xiàn)eed4JUnit 還提供自定義數(shù)據(jù)源,以滿足不同用戶的需求,用戶同樣可以通過封裝 JUnit 4 提供的參數(shù)化測試的方法來完成數(shù)據(jù)源自定義,所有這里作者不再詳述,用戶可以封裝并取得不同的數(shù)據(jù)源的數(shù)據(jù),傳遞給 Feed4JUnit 的相應(yīng)接口,來完成數(shù)據(jù)源的自定義。

  結(jié)束語

  本文通過對比介紹和簡單易懂的實(shí)例全面講解了 Feed4JUnit 對數(shù)據(jù)與代碼分離的測試支持。通過提供簡單的注釋,F(xiàn)eed4JUnit 使用戶能夠極其方便的實(shí)施數(shù)據(jù)與代碼分離的測試,極大地增強(qiáng)了 JUnit 測試框架的易用性。 相信您已經(jīng)在本文的敘述中看到它的優(yōu)點(diǎn)。同時,本文所敘述的僅僅是 Feed4JUnit 提供的測試增強(qiáng)功能的一部分,F(xiàn)eed4JUnit 同時還提供了大量數(shù)據(jù)的隨機(jī)測試和等價類測試等眾多功能,如果您感興趣可以自行參考。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd