简体   繁体   English

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

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

So Im doing JUnit Tests.所以我在做 JUnit 测试。 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 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());代码逻辑问题,只需移动Params.add(listOfLists.toArray()); inside while loop fixed it.在 while 循环内修复了它。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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