猿问

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

我正在使用该类创建一个测试用例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 是一个数组。只需直接传递元素即可。它们将自动合并到一个数组中。顺便说一句,在需要 Object ... 的地方传递一个数组会使意图变得模糊:数组应该是一个对象还是一组对象?


我可能需要添加更多参数,因此使用该类Parameterized很有帮助,我想使用它,但我不确定如何解决我遇到的问题以及它是否值得解决。任何想法都会有帮助。


米琪卡哇伊
浏览 87回答 1
1回答

杨魅力

Arrays.asList的签名是public static <T> List<T> asList(T... a)因此Arrays.asList,您可以向其提供单独的数组元素,而不是向 提供数组。在这个特殊情况下:return Arrays.asList(&nbsp; new Translate[] { Translate.EN },&nbsp; new Translate[] { Translate.FR });
随时随地看视频慕课网APP

相关分类

Java
我要回答