[英]How to compare two Linked Lists correctly in JUnit?
我有以下句子:
assertArrayEquals(Arrays.asList(df.sort("State", new SortDescending())).toArray(),Arrays.asList("[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]").toArray());
function 的返回是一個 List< Object > 它包含:
[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]
錯誤是:
Expected :java.util.LinkedList<[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]>
Actual :java.lang.String<[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]>
當我比較這兩個列表時,為什么我沒有通過測試?
在 Java 中, "
字符指定一個字符串值。不是列表。只是一個字符串值。
這個:
"[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]"
不是列表。 它是一個單一的字符串 object,其值可能恰好看起來像一個列表,但它不是一個列表。 它位於雙引號 ( "
) 中,因此它是單個字符串 object。
這個:
Arrays.asList("[WV, WV, WI, WA, VA, TX, SD, PA, OH, ND, NC, NC, MB, MA, KS, FL, DE]")
創建一個包含一個元素的列表。 它是一個大小為 1 的List<String>
。
Arrays.asList
不會嘗試以任何方式解析字符串。 您不能在單個字符串值內指定項目列表。
你可能打算寫的是這樣的:
Arrays.asList("WV", "WV", "WI", "WA", "VA", "TX", "SD", "PA", "OH", "ND", "NC", "NC", "MB", "MA", "KS", "FL", "DE")
請注意,它們不是[
或]
字符。 該列表由單獨的字符串值組成,每個字符串值都指定為 Arrays.asList 的單獨參數。
您可能會發現直接比較列表更容易:
Assert.assertEquals("Checking for correctly sorted list.",
Arrays.asList("WV", "WV", "WI", "WA", "VA", "TX", "SD", "PA", "OH", "ND", "NC", "NC", "MB", "MA", "KS", "FL", "DE"),
Arrays.asList(df.sort("State", new SortDescending())));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.