【问题标题】:org.junit.ComparisonFailure with identical resultsorg.junit.ComparisonFailure 结果相同
【发布时间】:2018-05-10 11:45:39
【问题描述】:

我克隆了现有项目,JUnit-4.12 中有一些单元测试。这些测试在每次推送到远程存储库后启动,它们将成功结束,但是当我在 Eclipse 中的本地计算机上运行它们时,它们将以比较失败结束。

org.junit.ComparisonFailure expected:<xy> but was:<xy>

此错误将结束每个测试,我正在尝试将发送的 json 与现有的 json 文件进行比较。

测试:

@Test
public void calculateSignedCasesView() throws JsonProcessingException {
    Case case1 = prepareCase();
    getEm().persist(case1);
    SignedCasesViewFilter filter = new SignedCasesViewFilter(new LinkedHashSet<String>(Arrays.asList("testCode")), new Date(0), new Date(0));
    SignedCasesView view = reportService.calculateSignedCasesView(filter);
    String actual = getObjectMapper().writeValueAsString(view);
    String expected = readToString("signedCasesReportView01.json");
    Assert.assertEquals(expected, actual);
}

当我查看结果时,每行的初始空格都会突出显示。

结果:

我尝试将此结果复制到 MS Word 中查看,如果没有任何不间断的空格(讨论 here),但所有空格都是普通的。或者我尝试使用不同的编码运行测试,但没有任何效果。

【问题讨论】:

  • 我会在您的测试中设置一个断点并查看两个字符串中的实际字符。
  • 这可以是不同的换行符、制表符和空格,... 将值调试或打印为十六进制/代码点,原因很可能很明显。
  • 好点@tgdavies 我不知道为什么我以前没有想到它。我的 Q 可能重复 stackoverflow.com/a/36324599/3125587

标签: java unit-testing junit junit4


【解决方案1】:

如果测试在存储库上运行,而在您的本地机器上运行,我猜编码或生成 json 的方式会有所不同。您没有显示例如 readToString 函数或 signedCasesReportView01.json 文件,它们在存储库和本地环境中可能不同。我的猜测是新行,这是不同环境中最常见的问题,当我查看您的测试用例时,没有任何其他特殊字符。

例如,当您将文件复制到 git 存储库并且它被配置 core.autocrlf 修改并且它自动将 \r\n 从本地 Windows 机器更改为 \n 时,它经常发生,因为它在另一端是 unix。甚至提交的文件可能不会在客户端显示差异,但它们实际上可能不同。比较字节流或逐行,您应该能够发现差异。

【讨论】:

    【解决方案2】:

    这可能是 Veselin 建议的行尾问题。或许可以考虑在不需要文件的确切格式的情况下进行语义比较。

    您可以通过 ModelAssert - https://github.com/webcompere/model-assert 实现这一目标

    String actual = getObjectMapper().writeValueAsString(view);
    String expected = readToString("signedCasesReportView01.json");
    assertJson(actual)
        .isEqualTo(expected);
    

    不一样的地方,也会输出不一样的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多