清单 4. 文件数据源示例
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 运行即可,运行结果如图 4 所示,我们可以看到,Data.xls 中的数据已全部传入测试方法并运行。
图 4. 运行结果示例
以数据库作为数据源
通过使用 @Database ,您可以很方便的使用来自于数据库的数据,这在进行大量测试数据测试的时候或者复用现有的应用业务数据作为测试数据的情况下比较有用。
当您使用来自数据库的数据源的时候,首先必须使用 @Database 声明数据库的信息 ,可以为类或方法添加 @Database 注释 , 如果注释类为 @Database 的时候,类中所有的方法都可以使用此数据库的数据作为源,当声明 @Database 于方法的时候,此类中仅此方法可以调用数据库作为数据源。@ Database 具有一些属性,用于声明用于连接数据库信息,请看一下说明:
id: 一个用于标识数据库数据源标识符,在测试方法的 @Source 中进行引用关联
url:数据库的 URL
driver: 数据库的驱动
user: 数据库的用户名
password:数据库的密码
完成以上数据库的定义后,需要在测试方法的 @Source 中引用您所需要的库,使用属性 id 和 selector 可以完成此操作:
id: @Source 中的 id 和 @Database 的 id 相对应关联
selector:SQL 语句,用于查询出相应的数据传递给测试方法
以下我们以 DB2 作为数据源,使用 DB2 的 Sample 数据库,并创建名为 TEST 的表来存储测试数据,测试数据与图 3 Excel 数据源的完全相同,请看图 5。