我希望能够在日志中打印一条消息,其中intellij想法将提供一种比较两个对象(字符串)的好方法。对于由失败的junit断言记录的错误消息,这会自动发生:
assertEquals("some\nString", "another\nString"); => org.junit.ComparisonFailure: <Click to see difference> at org.junit.Assert.assertEquals(Assert.java:123) at org.junit.Assert.assertEquals(Assert.java:145) at com.something.DummyTest.testDummy(DummyTest.java:89)
&lt;点击查看差异&gt;条目实际上显示为Intellij Idea输出窗口中的链接。当您单击该链接时,将打开一个比较窗口,其中显示了两个值(就像您比较两个文件一样)。
简单地抛出异常是不可接受的,因为我想记录多个对象进行比较。我已经尝试过记录文本,但我无法说服想法比较这两个文本。
答案 0 :(得分:25)
IntelliJ IDEA正在使用硬编码的正则表达式。如果文本与模式匹配,则建议单击以查看差异。
模式是:
expected:<bla-blah> but was:<blah-blah-blah>
输出应与assertEquals
或assertThat
。
确切的模式在IDEA的代码中有些分散,但有些例如是here
答案 1 :(得分:1)
我遇到了同样的问题,并在https://github.com/joel-costigliola/assertj-core/issues/1364#issuecomment-440800958中找到了解决方法
您应该抛出org.junit.ComparisonFailure
。然后IntelliJ将显示<Click to see difference>