【问题标题】:junit test for a method with return type int and parameters as arraylistjunit 测试返回类型为 int 且参数为 arraylist 的方法
【发布时间】:2020-12-27 20:42:34
【问题描述】:

以下方法检查具有给定值/总和的所有三元组。我想为此方法编写一个@Test 方法,该方法返回一个整数,并接受一个数组列表和一个变量作为参数。有没有办法可以为以下代码编写 junit5 测试-

int triplets(ArrayList<Integer> a, int sum)
{
    int l, r;
    int count = 0;

    for (int i = 0; i < a.size() - 2; i++) {

        l = i + 1;
        r = a.size() - 1;
        while (l < r) {
            if ( a.get(i) + a.get(l) + a.get(r) == sum) {
                count++;
                System.out.print("Triplet " + count +" is " + a.get(i) + ", " + a.get(l) + ", " + a.get(r) + "\n");
                l++;
                r--;
            }
            else if (a.get(i) + a.get(l) + a.get(r) < sum)
                l++;

            else // arr.get(i) + arr.get(l) + arr.get(r) > sum
                r--;
        }
    }
    if(count!=0)
    {
        System.out.print("Total triplets present: " + count);
        return 1;
    }
    else
        return -1;
}

【问题讨论】:

    标签: unit-testing pom.xml junit4 assert junit5


    【解决方案1】:

    在 JUnit5 中,您可以为此使用带有 MethodSource 的 ParameterizedTest。

    static Stream<Arguments> arrayListProvider() {
    
        List<Arguments> argList = new ArrayList<>();
        List<Integer> testList;
        int sum, expectedResult;
    
        // Repeat this as required to cover the set of test cases of interest
        // Test set 1
        testList = new ArrayList<>(Arrays.asList(
                1, 2, 3, 4, 5, 6, 7, 8, 9));
        sum = 9;
        expectedResult = 1;
        argList.add(arguments(testList, sum, expectedResult));
    
        // Test set 2
        testList = new ArrayList<>(Arrays.asList(
                1, 2, 3, 4, 5));
        sum = 13;
        expectedResult = -1;
        argList.add(arguments(testList, sum, expectedResult));
        //...
    
        return argList.stream();
    
    }
    
    @ParameterizedTest
    @MethodSource("arrayListProvider")
    void testTriplets(ArrayList<Integer> a, int sum, int expectedResult) {
    
        assertEquals(expectedResult, triplets(a, sum));
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多