我照例上產生地圖作爲輸出代碼工作。隨着代碼的變化,我必須確保代碼變化產生相同的地圖輸出作爲舊代碼。所以我所做的是我連載所需的輸出映射到JSON文件,現在寫的JUnit測試案例我跑,看看是否通過新代碼創建的映射與從JSON deserialised地圖匹配。然而,當它不匹配就變得很難準確地指出,在這關鍵之眼福。例如,請考慮下面的代碼:知道哪裏地圖在它們的內容的不同之處常規
def nestedmapeq1 = ["key1":"val1","key2":"val2", "key3": ["k1":"v1","k2":["v2"]]]
def nestedmapeq2 = ["key1":"val1","key2":"val2", "key3": ["k1":"v1","k2":["v2","v3"]]]
assert nestedmapeq1.equals(nestedmapeq2)
輸出這裏如下:
正如你可以看到不同的是,關鍵k2
嵌套列表在nestedmapeq2
而兩個元素``nestedmapeq``中只有一個元素
在這種情況下,查看嵌套鍵/列表具有不同內容的輸出很簡單。但是,當輸出是非常大的,比如說含200+地圖列表,或者說圖的200多個鍵,就幾乎不可能從那裏不同之處在於輸出來推斷。
我可以寫一個遞歸泛型函數做相同的,只是想知道,如果這樣美妙的事情已經存在,可以明確地指出了列表索引和地圖鍵,其內容是不同的。如果它需要兩個對象作爲參數,既可以是列表也可以是映射,並檢查它們的內容是否相同,即使這樣的泛型函數的Java實現也可以完成這項工作。 )
我不相信這樣的事情已經存在... –
'assert'用'.equals'上'Map'做檢查內容是否相同。對?缺少的僅僅是能夠明確說明內容不同的特徵? – Mahesha999