時,預期的相等JSON字符串不相等我爲Web服務客戶端編寫了JUnit測試,該測試向服務提交JSON文檔。當使用assertEquals
我將「正確」的JSON文檔保存到文件中,然後在測試執行後將其與實際結果進行比較。
他們不匹配,雖然線是相同的:
org.junit.ComparisonFailure:
Expected :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
Actual :{"Callback":null,"Data":
{"MarketCode":"ISEM",,............"Price":2.99}]}]}]}]}}
線非常長,大約4K字,所以我切大部分是在這裏,但它們的長度是一樣的。我在調試器中比較了string.size(),並且在比較之前對其進行了修剪,以刪除文本編輯器可以隱式插入的最後一些不可見或空白符號。
另外,單獨執行測試也可以。但是,當我將它作爲更大套件的一部分運行時,它會失敗。
沒有全局/靜態變量,所以內存重寫應該不是問題。 我嘲諷的Web服務客戶端提取請求字符串,像這樣:
StringBuilder pd = new StringBuilder();
doAnswer((invocation) -> {
String postDocument = ((String)invocation.getArguments()[0]).trim();
pd.append(postDocument);
return null;
}).when(client).doPost(anyString(), anyObject());
客戶是嘲笑類。
然後我比較修剪字符串的版本,但它不利於
String expectedSubmit = TestUtils.readXmlFromFile("strategyexecution\\ireland_bm_strategy_override_expected.json").trim();
assertEquals(expectedSubmit, pd.toString().trim());
它可能是一個編碼問題?您可以嘗試寫入兩個字符串來分隔文件,並採用md5或sha1校驗和來查看實際字節是否相同。 – inovaovao
請發表[mcve]'assertEquals'不壞 – 2017-09-14 11:25:10
在Jenkins env上運行良好。看起來像IntelliJ IDEA中的錯誤。它僅在IDEA中失效,並且僅在整個套件(不是在一個類文件中進行隔離測試)執行時纔會失敗 –