如何从文本文件中读取数据并将其作为java中的参数化测试传递给junit测试?

如何从文本文件中读取数据并将其作为java中的参数化测试传递给junit测试?,java,junit,parameterized,Java,Junit,Parameterized,所以我在做JUnit测试。当我在一个文本文档中获取测试方法的参数时,我遇到了一个问题,即参数对象工作不正常。我的所有参数一次通过测试方法,但我希望它们分别通过 下图是我想要的(红线表示第二组参数)。该图像是我的测试方法的一个示例运行 这是我的代码: String fileName = "ChargeData.txt"; try { scan = new Scanner(new File(fileName)); } catch(File

所以我在做JUnit测试。当我在一个文本文档中获取测试方法的参数时,我遇到了一个问题,即参数对象工作不正常。我的所有参数一次通过测试方法,但我希望它们分别通过

下图是我想要的(红线表示第二组参数)。该图像是我的测试方法的一个示例运行

这是我的代码:

    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()应该在循环中。无论如何,非常感谢!