Java 由于多行,AssertEquals失败
我用StringBuilder生成了两个相同的字符串Java 由于多行,AssertEquals失败,java,junit,stringbuilder,multiline,Java,Junit,Stringbuilder,Multiline,我用StringBuilder生成了两个相同的字符串 for(Integer value : ans.keySet()) answer.append(String.format("%d=%d\n", value, ans.get(value))); 但是当我写作的时候 assertEquals(answer, answer1); 测试失败,没有差异。我在Windows中工作。您可能希望使用%n而不是\n 在String.format中,这等于默认的系统行结尾,在Windows上为\r\n:
for(Integer value : ans.keySet())
answer.append(String.format("%d=%d\n", value, ans.get(value)));
但是当我写作的时候
assertEquals(answer, answer1);
测试失败,没有差异。我在Windows中工作。您可能希望使用
%n
而不是\n
在String.format
中,这等于默认的系统行结尾,在Windows上为\r\n
:
“n”行分隔符结果是平台特定的行
分离器
您可以像这样使用Hamcrest匹配器
向我们展示完整的实现以及answer1 Creation欢迎使用Stack Overflow!请拿着这本书,四处看看,仔细阅读,尤其是和当它在Windows中工作时,它会在哪里失败呢?@MaciejKowalski它是一样的,就像answer@AverinMaxim给我们可以运行和查看的代码@JaroslawPawlak,只需克隆存储库并运行Tester.javaNo,错了。空白是空白,行分隔符是行分隔符。
assertThat(answer, equalToIgnoringWhiteSpace(answer2));