时,预期的相等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中失效,并且仅在整个套件(不是在一个类文件中进行隔离测试)执行时才会失败 –