25

我希望能够在日志中打印一条消息,intellij idea 将为此提供一种比较两个对象(字符串)的好方法。对于失败的 junit 断言记录的错误消息,这会自动发生:

assertEquals("一些\nString", "另一个\nString");

=>
org.junit.ComparisonFailure: <点击查看区别>
    在 org.junit.Assert.assertEquals(Assert.java:123)
    在 org.junit.Assert.assertEquals(Assert.java:145)
    在 com.something.DummyTest.testDummy(DummyTest.java:89)

<Click to see Difference> 条目实际上在 Intellij Idea 的输出窗口中显示为一个链接。当您单击链接时,将打开一个比较窗口,其中显示两个值(就像您比较两个文件一样)。

简单地抛出异常是不可接受的,因为我想记录多个对象进行比较。我已经尝试记录一个文本,但我无法说服想法来比较这两个文本。

4

2 回答 2

34

IntelliJ IDEA 使用的是硬编码的正则表达式。如果文字与图案匹配,会建议点击查看差异。

模式是:

expected:<bla-blah> but was:<blah-blah-blah>

输出应与assertEqualsor的格式匹配assertThat

确切的模式有点分散在 IDEA 中的代码周围,但有些是例如here

于 2012-06-08T08:46:16.420 回答
4

我遇到了同样的问题,并在https://github.com/joel-costigliola/assertj-core/issues/1364#issuecomment-440800958中找到了解决方案

你应该扔一个org.junit.ComparisonFailure. 然后 IntelliJ 将显示<Click to see difference>

于 2020-02-07T14:16:59.453 回答