如何从文本文件中读取数据并将其作为java中的参数化测试传递给junit测试?
所以我在做JUnit测试。当我在一个文本文档中获取测试方法的参数时,我遇到了一个问题,即参数对象工作不正常。我的所有参数一次通过测试方法,但我希望它们分别通过 下图是我想要的(红线表示第二组参数)。该图像是我的测试方法的一个示例运行 这是我的代码:如何从文本文件中读取数据并将其作为java中的参数化测试传递给junit测试?,java,junit,parameterized,Java,Junit,Parameterized,所以我在做JUnit测试。当我在一个文本文档中获取测试方法的参数时,我遇到了一个问题,即参数对象工作不正常。我的所有参数一次通过测试方法,但我希望它们分别通过 下图是我想要的(红线表示第二组参数)。该图像是我的测试方法的一个示例运行 这是我的代码: String fileName = "ChargeData.txt"; try { scan = new Scanner(new File(fileName)); } catch(File
String fileName = "ChargeData.txt";
try
{
scan = new Scanner(new File(fileName));
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
ArrayList<Object[]> Params = new ArrayList<Object[]>();
List listOfLists = new ArrayList();
ArrayList <Integer> quantityList;
ArrayList <Boolean> highQualityList;
ArrayList <Boolean> designEffectList;
ArrayList <Double> expectedResultList;
while(scan.hasNext())
{
quantityList = new ArrayList<Integer>();
highQualityList = new ArrayList<Boolean>();
designEffectList = new ArrayList<Boolean>();
expectedResultList = new ArrayList<Double>();
while(scan.hasNextInt())
{
quantityList.add(new Integer(scan.next()));
}
for(int i=0;i<quantityList.size();i++)
{
highQualityList.add(new Boolean(scan.next()));
}
for(int i=0;i<quantityList.size();i++)
{
designEffectList.add(new Boolean(scan.next()));
}
expectedResultList.add(new Double(scan.next()));
int[] quantity = new int[quantityList.size()];
boolean[] highQuality = new boolean[quantityList.size()];
boolean[] designEffect = new boolean[quantityList.size()];
double[] expectedResult = new double[1];
for (int i=0; i < quantity.length; i++)
{
quantity[i] = quantityList.get(i).intValue();
highQuality[i] = highQualityList.get(i).booleanValue();
designEffect[i] = designEffectList.get(i).booleanValue();
}
expectedResult[0] = expectedResultList.get(0).doubleValue();
listOfLists.add(quantity);
listOfLists.add(highQuality);
listOfLists.add(designEffect);
listOfLists.add(expectedResult);
}
Params.add(listOfLists.toArray());
scan.close();
return Params.toArray();
}
String fileName=“ChargeData.txt”;
尝试
{
扫描=新扫描仪(新文件(文件名));
}
catch(filenotfounde异常)
{
e、 printStackTrace();
}
ArrayList Params=新的ArrayList();
List listOfLists=新建ArrayList();
ArrayList quantityList;
ArrayList高质量列表;
ArrayList设计效果列表;
ArrayList expectedResultList;
while(scan.hasNext())
{
quantityList=新的ArrayList();
highQualityList=新的ArrayList();
designEffectList=新的ArrayList();
expectedResultList=newArrayList();
while(scan.hasNextInt())
{
add(新整数(scan.next());
}
对于(int i=0;i代码逻辑问题,只需将Params.add(listOfLists.toArray());
移到内部,而循环将其修复
while(scan.hasNext())
{
quantityList = new ArrayList<Integer>();
highQualityList = new ArrayList<Boolean>();
designEffectList = new ArrayList<Boolean>();
expectedResultList = new ArrayList<Double>();
while(scan.hasNextInt())
{
quantityList.add(new Integer(scan.next()));
}
for(int i=0;i<quantityList.size();i++)
{
highQualityList.add(new Boolean(scan.next()));
}
for(int i=0;i<quantityList.size();i++)
{
designEffectList.add(new Boolean(scan.next()));
}
expectedResultList.add(new Double(scan.next()));
int[] quantity = new int[quantityList.size()];
boolean[] highQuality = new boolean[quantityList.size()];
boolean[] designEffect = new boolean[quantityList.size()];
double[] expectedResult = new double[1];
for (int i=0; i < quantity.length; i++)
{
quantity[i] = quantityList.get(i).intValue();
highQuality[i] = highQualityList.get(i).booleanValue();
designEffect[i] = designEffectList.get(i).booleanValue();
}
expectedResult[0] = expectedResultList.get(0).doubleValue();
listOfLists.add(quantity);
listOfLists.add(highQuality);
listOfLists.add(designEffect);
listOfLists.add(expectedResult);
Params.add(listOfLists.toArray());
}
while(scan.hasNext())
{
quantityList=新的ArrayList();
highQualityList=新的ArrayList();
designEffectList=新的ArrayList();
expectedResultList=newArrayList();
while(scan.hasNextInt())
{
add(新整数(scan.next());
}
对于(int i=0;iYou可以使用参数化测试:嗯,我刚刚发现,我的Params.add()应该在循环中。无论如何,非常感谢!