Junit パラメータ化テストを実行しようとしています。以下は、配列のコレクションにデータを追加することを Junit が提案する方法です。
Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
return Arrays.asList(data);
ただし、これにはユーザーがコードにデータを追加する必要があります。ファイル (約 300 行) からデータを読み取り、それを配列のコレクションに変換したいと考えています。どうやってやるの ?
コードは次のとおりです。
import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(value=Parameterized.class)
public class UrlParameterizedTest {
private String url;
public static ArrayList<String>dataArray=new ArrayList<String>();
static File directory = new File(".");
public static String fileToRead;
public UrlParameterizedTest(String url){
this.url=url;
}
@Parameters
public static Collection<Object[]> data() throws Exception {
try {
fileToRead=directory.getCanonicalPath()+"\\Data\\LinkChecker.csv";
loadDataFile(fileToRead);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Object[][]data=new Object[dataArray.size()][];
******* //convert dataArray to data here.************
return Arrays.asList(data);
}
@Test
public void testURLs() {
System.out.println("Parameterized Number is "+url);
}
public static void loadDataFile(String dataFile) throws Exception {
dataArray.clear();
//if data_file is absolute, use this
try
{
// Open an input stream
// Read a line of text
String line="";
BufferedReader br=new BufferedReader(new FileReader(dataFile));
while((line=br.readLine())!=null) {
dataArray.add(line);
}
br.close();
System.out.println("The data file length is "+ dataArray.size());
}
catch (IOException e)
{
e.printStackTrace();
System.out.println ("Unable to read from file");
}
}
}