首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Junit中打印`@Parameters`注释内的数组内容

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

Stack Overflow用户
提问于 2015-11-16 23:28:18
回答 1查看 247关注 0票数 2

我有一个参数化的JUnit类,用来设置参数化的数据:

代码语言:javascript
复制
@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

    });
}

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

代码语言:javascript
复制
[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}是一个数组。

有什么方法可以获取数组的内容吗?

例如,使用像这样的符号

代码语言:javascript
复制
@Parameters(name = "{index}: {0}/{1[0]}-{1[1]} : {2}")

要获得

代码语言:javascript
复制
[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},但都不起作用

EN

回答 1

Stack Overflow用户

发布于 2015-11-16 23:42:16

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

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

代码语言:javascript
复制
Collection<Object[]> data = ... // build your data
for (Object[] parameter : data) {
    parameter[3] = Arrays.toString((Object[]) parameter[1]);
}
return data;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33738888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档