清單 4. 文件數(shù)據(jù)源示例
package sample.test;
import static org.junit.Assert.assertEquals;
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 CSV/Excel File source
*/
@RunWith(Feeder.class)
public class F4JfromFile {
@Test
@Source("Data.csv")//CSV source
public void testAccessCheck_CSV(String userName, String pw, boolean expected) {
assertEquals(expected, UserAccess.accessCheck(userName, pw));
}
@Test
@Source("Data.xls")//Excel source
public void testAccessCheck_Excel(String userName, String pw, boolean expected) {
assertEquals(expected, UserAccess.accessCheck(userName, pw));
}
}
3. 運(yùn)行測(cè)試,因?yàn)?Feed4Junit 是 JUnit 的擴(kuò)展,所以運(yùn)行方式與 JUnit 完全相同,即以 JUnit 運(yùn)行即可,運(yùn)行結(jié)果如圖 4 所示,我們可以看到,Data.xls 中的數(shù)據(jù)已全部傳入測(cè)試方法并運(yùn)行。
圖 4. 運(yùn)行結(jié)果示例
以數(shù)據(jù)庫(kù)作為數(shù)據(jù)源
通過使用 @Database ,您可以很方便的使用來自于數(shù)據(jù)庫(kù)的數(shù)據(jù),這在進(jìn)行大量測(cè)試數(shù)據(jù)測(cè)試的時(shí)候或者復(fù)用現(xiàn)有的應(yīng)用業(yè)務(wù)數(shù)據(jù)作為測(cè)試數(shù)據(jù)的情況下比較有用。
當(dāng)您使用來自數(shù)據(jù)庫(kù)的數(shù)據(jù)源的時(shí)候,首先必須使用 @Database 聲明數(shù)據(jù)庫(kù)的信息 ,可以為類或方法添加 @Database 注釋 , 如果注釋類為 @Database 的時(shí)候,類中所有的方法都可以使用此數(shù)據(jù)庫(kù)的數(shù)據(jù)作為源,當(dāng)聲明 @Database 于方法的時(shí)候,此類中僅此方法可以調(diào)用數(shù)據(jù)庫(kù)作為數(shù)據(jù)源。@ Database 具有一些屬性,用于聲明用于連接數(shù)據(jù)庫(kù)信息,請(qǐng)看一下說明:
id: 一個(gè)用于標(biāo)識(shí)數(shù)據(jù)庫(kù)數(shù)據(jù)源標(biāo)識(shí)符,在測(cè)試方法的 @Source 中進(jìn)行引用關(guān)聯(lián)
url:數(shù)據(jù)庫(kù)的 URL
driver: 數(shù)據(jù)庫(kù)的驅(qū)動(dòng)
user: 數(shù)據(jù)庫(kù)的用戶名
password:數(shù)據(jù)庫(kù)的密碼
完成以上數(shù)據(jù)庫(kù)的定義后,需要在測(cè)試方法的 @Source 中引用您所需要的庫(kù),使用屬性 id 和 selector 可以完成此操作:
id: @Source 中的 id 和 @Database 的 id 相對(duì)應(yīng)關(guān)聯(lián)
selector:SQL 語(yǔ)句,用于查詢出相應(yīng)的數(shù)據(jù)傳遞給測(cè)試方法
以下我們以 DB2 作為數(shù)據(jù)源,使用 DB2 的 Sample 數(shù)據(jù)庫(kù),并創(chuàng)建名為 TEST 的表來存儲(chǔ)測(cè)試數(shù)據(jù),測(cè)試數(shù)據(jù)與圖 3 Excel 數(shù)據(jù)源的完全相同,請(qǐng)看圖 5。