2. 解壓下載的 zip 包,復(fù)制整個(gè) lib 文件夾到您的 Java 項(xiàng)目的根目錄,如圖 1:
圖 1. 復(fù)制 lib 到項(xiàng)目根目錄
3. 選定項(xiàng)目,右鍵選擇項(xiàng)目的屬性,然后通過 Add JARs 將步驟 2 中 lib 文件夾下的所有 Jar 添加到項(xiàng)目的 Build Path 下,如圖 2
圖 2. 添加 Jar 到 Build Path
通過以上三步,您已經(jīng)準(zhǔn)備好您的 Feed4JUnit 環(huán)境并可以開始使用它,當(dāng)然,開發(fā)測(cè)試代碼之前,您必需要將 Feed4JUnit 相應(yīng)的包 Import 進(jìn)您的類。
使用 Feed4JUnit 實(shí)現(xiàn)數(shù)據(jù)與代碼分離的測(cè)試
Feed4JUnit 的數(shù)據(jù)源可以包括以下幾種類型 - 文件 (CSV 或者 Excel )、數(shù)據(jù)庫(kù)、自定義數(shù)據(jù)源。
Feed4JUnit 使用一個(gè)特殊的運(yùn)行類 Feeder.class,用來支持與標(biāo)識(shí)參數(shù)化測(cè)試,如果您想要編寫數(shù)據(jù)與代碼分離的測(cè)試腳本,必須在您的測(cè)試類上增加注釋 @RunWith(Feeder.class) 。同時(shí),您需要使用 @Test 來標(biāo)示您實(shí)現(xiàn)測(cè)試的方法,并且使用 @Source 來聲明和接收數(shù)據(jù)源的數(shù)據(jù),基本的代碼結(jié)構(gòu)如清單 3 所示:
清單 3. 基本代碼結(jié)構(gòu)
package sample.test;
import static org.junit.Assert.assertEquals;
import org.databene.feed4junit.Feeder;
import org.databene.benerator.anno.Source;
import org.junit.Test;
import org.junit.runner.RunWith;
/*
* Feed4JUnit - @RunWith, @Test and @Source
*/
@RunWith(Feeder.class) //Specify the class will be ran as Feeder class
public class Feed4JSample {
@Test //Specify the method as a test method
@Source()//Specify the input data source
public void testAccessCheck() {
assertEquals(true, true);
}
}
以文件作為數(shù)據(jù)源
Feed4JUnit 支持從 CSV 或者 Excel 文件里面讀取數(shù)據(jù)作為輸入,這里我們以 Excel 文件為例。
1. 在測(cè)試項(xiàng)目的根目錄下創(chuàng)建 Data.xls 數(shù)據(jù)文件,樣例數(shù)據(jù)如圖 3,默認(rèn)情況下,第一行會(huì)以列名存在,在運(yùn)行過程中不會(huì)作為數(shù)據(jù)讀取。
圖 3. Excel 數(shù)據(jù)源
2. 創(chuàng)建測(cè)試類并在接收數(shù)據(jù)的測(cè)試方法上聲明數(shù)據(jù)源為 @Source("Data.xls"),Excel 中的數(shù)據(jù)在傳遞過程中會(huì)自動(dòng)按照列與測(cè)試方法的參數(shù)的位置順序進(jìn)行匹配,并以行作為一個(gè)單位讀取并傳遞給測(cè)試方法體。比如圖 3 中的 user 列的值會(huì)做為方法的第一個(gè)參數(shù)傳入方法體中,pw 列的值會(huì)作為方法的第二個(gè)參數(shù),以此類推。在測(cè)試進(jìn)行過程中,首先在 Excel 文件中讀取一行(包含三列),接著按照位置順序?qū)?shù)據(jù)傳遞到方法體中(每列按順序?qū)?yīng)一個(gè)參數(shù))進(jìn)行執(zhí)行,執(zhí)行完成后讀取 Excel 中的下一行進(jìn)行相同流程的測(cè)試,其原理與 Java 中的迭代器十分類似。請(qǐng)注意當(dāng)數(shù)據(jù)文件中數(shù)據(jù)的列數(shù)小于測(cè)試方法參數(shù)的個(gè)數(shù)的時(shí)候,測(cè)試會(huì)因?yàn)槲恢貌黄ヅ涠 ?/p>