我有一个参数化的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},但都不起作用
发布于 2015-11-16 23:42:16
Parameters注释的name-argument用作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;https://stackoverflow.com/questions/33738888
复制相似问题