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



所以我正在进行Junit测试。当IM在文本文档中获取我的测试方法的参数时,我会反对参数对象无法正常工作的问题。我所有的参数都会一次传递给测试方法,但我希望它们单独通过。

图像下面是我想要的(红线是指第二组参数(。该图像是我的测试方法的样本运行。

https://ibb.co/nflhoc

这是我的代码:

    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();
}

代码逻辑问题,只需将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());
    }

最新更新