参数化的Junit类-如何将ArrayList作为参数发送到method()

时间:2019-06-26 13:36:06

标签: java junit4 junit5

考虑以下代码:

import static org.junit.Assert.assertEquals;
import java.util.Collection;
import java.util.List;
import org.assertj.core.util.Arrays;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class StackFrustratedCoderTest {
    private List<Integer> input;
    private Integer expected;
    private ItcStackFrustrated itcStack;

    public StackFrustratedCoderTest(List<Integer> array, Integer expected){
        this.input = array;
        this.expected = expected;
    }

    @Before
    public void init(){
        itcStack = new ItcStackFrustrated();
    }

    @Parameterized.Parameters
    public Collection parameterInput(){
        return Arrays.asList(new Object[][] {{1,7,2,2,4,4}, 11}});
    }

    @Test
    public void testFrustatedCoder(){
        assertEquals(this.expected, itcStack.check(this.input));
    }
}

考虑方法itcStack.check()是要测试的函数,并且作为参数,它需要ArrayList变量。

如何通过以下方法对其进行编码:

@Parameterized.Parameters
        public Collection parameterInput(){
            return Arrays.asList(new Object[][] {{1,7,2,2,4,4}, 11}});
        } 

上面的代码显示了编译错误。 {1,7,2,2,4,4}是一个整数数组,但我需要ArrayList。任何建议表示赞赏。

而且,如果可以提供任何文章,说明Parameterized类在内部如何起作用。

1 个答案:

答案 0 :(得分:2)

这里:

{1,7,2,2,4,4}

是可以创建int数组的文字。

简单地去:

Arrays.asList(1, 7, 2, ...);

相反。

编辑

我们可以通过这种方式实现。

int[] array = new int[]{1,7,2,2,4,4};
return Arrays.asList(new Object[][] {{Arrays.asList(array), 11}});