在JUnit中使用参数化类时,Varargs错误

问题描述 投票:2回答:1

我正在使用Parameterized类创建测试用例,以提高可伸缩性。我有类似以下内容...

@RunWith(Parameterized.class)
public class Test
{
    private final translator;

    @Parameterized.Parameters(name = "translate {0}")
    public static Collection parameters()
    {
        return Arrays.asList(new Object[][] {
                { Translate.EN },
                { Translate.FR }
        });
    }

    public Test1(Translate translate)
    {
        this.translator = new TranslatorImpl(translate);
    ...
    ...

我有一个Linter,它为以下部分抛出错误...

return Arrays.asList(new Object[][] {
        { Translate.EN },
        { Translate.FR }
});

它说...

仅出于将其作为varargs(...)参数传递的目的而创建数组是没有意义的; varargs是一个数组。只需直接传递元素。它们将自动合并到一个数组中。附带地在期望的对象...处传递数组会使意图不明确:该数组应该是一个对象还是对象的集合?

我可能必须添加更多参数,因此使用Parameterized类是有用的,我想使用它,但是我不确定如何解决我遇到的问题,甚至还没有解决的问题。任何想法都会有所帮助。

java junit parameterized
1个回答
2
投票

Arrays.asList的签名是public static <T> List<T> asList(T... a),因此可以将单个数组元素供入,而不是将数组供入Arrays.asList。在这种情况下:

return Arrays.asList(
  new Translate[] { Translate.EN },
  new Translate[] { Translate.FR }
);
© www.soinside.com 2019 - 2024. All rights reserved.