簡體   English   中英

如何正確比較 JUnit 中的兩個鏈表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM