Feed4Junit的简单使用(二)数据源来自文件

Feed4Junit官方地址:

http://databene.org/feed4junit.html

Feed4Junit数据源来自文件

           Feed4JUnit能够让编写JUnit的 参数化测试变得简便,并为这些测试提供预定义或随机测试数据。它能够从业务分析人员定义好的CVS或 Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功。

官方文档:

Reading test data from a file

Data sources are easily configured using the @Source annotation (org.databene.benerator.anno.Source):

@RunWith(Feeder.class)
public class LoginTest {

    @Test
    @Source("userlogin.csv")
    public void testLogin(String name, String password) {
          System.out.println("name:" + name + " password:" + password);
    }
    
 

Running the test, you will notice, that Feed4JUnit iterates through the CSV file and performs one test method call per data row.

Feed4JUnit currently supports the following file formats:

  • CSV files
  • Excel(TM) documents 

 

package com.easyway.feed4junit;

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 com.easyway.junit4.JunitSample.UserAccess;


/**
 * Feed4JUnit - Get Data from CSV/Excel File source
 * 以文件作为数据源
Feed4JUnit 支持从 CSV 或者 Excel 文件里面读取数据作为输入,这里我们以 Excel 文件为例。
1. 在测试项目的根目录下创建 Data.xls 数据文件,样例数据如图 3,默认情况下,第一行会以列名存在,在运行过程中不会作为数据读取。
图 3. Excel 数据源

2. 创建测试类并在接收数据的测试方法上声明数据源为 @Source("Data.xls"),Excel 中的数据在传递过程中会自动按照列与测试
方法的参数的位置顺序进行匹配,并以行作为一个单位读取并传递给测试方法体。比如图 3 中的 user 列的值会做为方法的第一个参数传入方法体中,
pw 列的值会作为方法的第二个参数,以此类推。在测试进行过程中,首先在 Excel 文件中读取一行(包含三列),接着按照位置顺序将数据传递到方
法体中(每列按顺序对应一个参数)进行执行,执行完成后读取 Excel 中的下一行进行相同流程的测试,其原理与 Java 中的迭代器十分类似。请注意
当数据文件中数据的列数小于测试方法参数的个数的时候,测试会因为位置不匹配而失败。
 */

@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.xlsx")//Excel source
	public void testAccessCheck_Excel(String userName, String pw, boolean expected) {
		assertEquals(expected, UserAccess.accessCheck(userName, pw));
	}
}

 

你可能感兴趣的:(JUnit4,Excel,csv,Feed4Junit)