2、数据与代码的分离(Feed4Junit)
Feed4JUnit 是开源的测试组件,您可以从如下链接下载最新版本http://sourceforge.net/projects/feed4junit/files/
Feed4JUnit 的数据源可以包括以下几种类型 – 文件 (CSV 或者 Excel )、数据库、自定义数据源。
基本的使用方法: Feed4JUnit 使用一个特殊的运行类 Feeder.class,用来支持与标识参数化测试,如果您想要编写数据与代码分离的测试脚本,必须同时满足下面的三个条件:
1)必须在您的测试类上增加注释 @RunWith(Feeder.class) 。
2)您需要使用 @Test 来标示您实现测试的方法。
3)使用 @Source 来声明和接收数据源的数据。
2.1 文件数据源(excel和csv差不多)
1)在测试项目的根目录下创建 data.xls 和data.csv数据文件,第一行会以列名存在,在运行过程中不会作为数据读取。
2)创建测试类并在接收数据的测试方法上声明数据源为 @Source("Data.xls"),Excel 中的数据在传递过程中会自动按照列与测试方法的参数的位置顺序进行匹配,并以行作为一个单位读取并传递给测试方法体。比如上图中的 user 列的值会做为方法的第一个参数传入方法体中,pw 列的值会作为方法的第二个参数,以此类推。在测试进行过程中,首先在 Excel 文件中读取一行(包含三列),接着按照位置顺序将数据传递到方法体中(每列按顺序对应一个参数)进行执行,执行完成后读取 Excel 中的下一行进行相同流程的测试,其原理与 Java 中的迭代器十分类似。请注意当数据文件中数据的列数小于测试方法参数的个数的时候,测试会因为位置不匹配而失败。
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.junit.code.*; @RunWith (Feeder.class ) public class Feed4junitSample { @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)); } } |
运行结果如下: