简体   繁体   中英

how to read data from text file and pass them to junit test as parameterized test in java?

So Im doing JUnit Tests. While Im getting the parameters for my test method in a text document I counter an issue that is after the parameter object is not working well. All my parameter pass to the test method at once but I want them to pass separately.

Image below is what I want(Red line means the second set of parameters). The image is a sample run of my test method.

https://ibb.co/nFLhOc

This is my code:

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

Code Logic problem, just move the Params.add(listOfLists.toArray()); inside while loop fixed it.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM