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