如何在Junit中的`@ Parameters`注释中打印数组内容

时间:2015-11-16 15:28:18

标签: arrays junit parameters

我有一个参数化的JUnit类与此类似的东西来设置参数化数据:

@Parameters(name = "{index}: {0}/{1} : {2}")
public static Collection<Object[]> data() {
    return Arrays.asList(new Object[][] {
            {
                    "Samsung",
                    new Object[] { "size", "10" },
                    "http://my.test.service.com/svc/brand/samsung?size=10"
    },
            {
                    "Apple",
                    new Object[] { "color", "red" },
                    "http://my.test.service.com/svc/brand/apple?color=red"
    },
    // Code truncated

    });
}

运行代码后,我可以看到如下结果:

[0: Samsung/[Ljava.lang.Object;@713dff89 : http://my.test.service.com/svc/brand/samsung?size=10]
[1: Apple/[Ljava.lang.Object;@23ab8f3f : http://my.test.service.com/svc/brand/apple?color=red]

等...

这非常符合逻辑,因为第二个元素{1}是一个数组。

有没有办法获取数组的内容?

用例如

的符号表示
@Parameters(name = "{index}: {0}/{1[0]}-{1[1]} : {2}")

获取

[0: Samsung/size-10 : http://my.test.service.com/svc/brand/samsung?size=10]
[1: Apple/color-red : http://my.test.service.com/svc/brand/apple?color=red]

我尝试使用{1}{0}{1[0]}{1.0},但没有一个正在使用

1 个答案:

答案 0 :(得分:1)

name注释的Parameters - 参数用作MessageFormat.format(pattern, args...)调用的第一个参数。

我找不到在MessageFormat的javadoc中格式化数组的提示。我的解决方案是将第四个参数添加到包含所需字符串的参数列表中。

Collection<Object[]> data = ... // build your data
for (Object[] parameter : data) {
    parameter[3] = Arrays.toString((Object[]) parameter[1]);
}
return data;