2015-11-16 49 views
0

我有一個參數化的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

name -argument的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;