我有一个参数化的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}
,但没有一个正在使用
答案 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;