package util;
import
java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import jxl.Sheet;
import jxl.Workbook;
public class CSVData implements Iterator<Object[]>{
private BufferedReader br =null;
//����
private int rowNum = 0;
//��ǰ��
private int curRowNo = 0;
//����
private int columnNum = 0;
//����
private String[] columnName;
private List<String> csvList;
/*
* 在TestNG中由@DataProvider(dataProvider = "name")修饰的方法
* 取Excel时,调用此类构造方法(此方法会得到列名并将当前行移到下以后)执行后,转发哦
* TestNG自己的方法中去,然后由它们调用此类实现的hasNext()、next()方法
* 得到一行数据,然后返回给由@Test(dataProvider = "name")修饰的方法,如此
* 反复到数据读完为止
*
*
* @param filepath Excel文件名
* @param casename 用例名
*/
public CSVData(String fileName, String casename) {
try{
File directory = new File(".");
String ss = "resources.";
File csv = new File(directory.getCanonicalFile() + "\\src\\test\\" +
ss.replaceAll("\\.", Matcher.quoteReplacement("\\")) + fileName +".csv");
br = new BufferedReader(new FileReader(csv));
csvList = new ArrayList<String>();
while(br.ready()){
csvList.add(br.readLine());
this.rowNum ++;
}
String stringValue[] = csvList.get(0).split(",");
this.columnNum = stringValue.length;
columnName = new String[stringValue.length];
for(int i = 0; i < stringValue.length; i++){
columnName[i] = stringValue[i].toString();
}
this.curRowNo ++;
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public boolean hasNext() {
if(this.rowNum ==0 || this.curRowNo >= this.rowNum){
try{
br.close();
}catch(Exception e){
e.printStackTrace();
}
return false;
}else{
return true;
}
}
@Override
public Object[] next() {
/*
* 将数据放入map
*/
Map<String, String> s = new TreeMap<String, String>();
String csvCell[] = csvList.get(curRowNo).split(",");
for(int i = 0; i< this.columnNum; i++){
String temp = "";
try{
temp = csvCell[i].toString();
}catch(ArrayIndexOutOfBoundsException ex){
temp = "";
}
s.put(this.columnName[i], temp);
}
Object r[] = new Object[1];
r[0] = s;
this.curRowNo ++;
return r;
}
@Override
public void remove() {
throw new UnsupportedOperationException("remove unsupported");
}
}
package net.tuxun.customer.module.fatch.service.implTest;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.tuxun.customer.module.fatch.service.impl.ClassifyFatchFood;
import net.tuxun.customer.module.fatch.service.impl.ClassifyFatchPersonel;
import org.apache.commons.logging.Log;
import org.apache.log4j.Logger;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.Assert;
import net.tuxun.component.kitchen.bean.Food;
import net.tuxun.component.kitchen.bean.Personel;
import util.CSVData;
import util.ExcelData;
/*
*/
public class ClassifyFatchPersonelUNExceptionTest {
@Test(dataProvider = "xxx")
public void testxxx(Map<String, String> data) {
TestClass test = new TestClass();//需要被测试的函数
List<Personel> personList = new ArrayList<Personel>();
System.out.println(data.get("isRun"));
//XML**
if(data.get("isRun").equals("y"))
{
String xml="123"
testList = test.parseXML(xml);
Assert.assertEquals(testList.size(), Integer.parseInt(data.get("expected")),"校验失败");
}else{
return;
}
}
@DataProvider(name = "xxx")
public Iterator<Object[]> data() throws Exception{
return (Iterator<Object[]>)new CSVData("fileName","SheetName");
}
@BeforeTest
public void beforeTest() {
}
@AfterTest
public void afterTest() {
}
}