首页 > 解决方案 > Eclipse 有没有办法以与 unix (TeamCity) 构建主机相同的方式运行 Java 单元测试?org.junit.ComparisonFailure 问题

问题描述

我有一个奇怪的问题,我可以通过 TeamCity 构建我们的代码库而不会出现任何问题。另一方面,当我通过 Eclipse 触发构建时,我得到 org.junit.ComparisonFailure。

失败的代码如下:

@Test
public void prettyPrintTest() throws BunchOfExceptions {
    InputStream formattedXml = DomUtilsTest.class.getResourceAsStream("/path/to/sample/file/formattedOutput.xml");
    InputStream notFormattedXml = DomUtilsTest.class.getResourceAsStream("/path/to/sample/file/notFormattedInput.xml");

    DocumentBuilder builder = ClassBeingTested.getDocumentBuilderFactory().newDocumentBuilder();
    Document notFormattedDocument = builder.parse(notFormattedXml);
    String prettyPrintedXmlContent = ClassBeingTested.prettyPrint(notFormattedDocument);
    
    Assert.assertEquals(IOUtils.toString(formattedXml), prettyPrintedXmlContent);
}

TeamCity 上的单元测试很好,我同事的 IntelliJ 上也很好(他编写了这段代码)。但我在我的机器上收到以下错误:

org.junit.ComparisonFailure: 
expected:<<message>[
    <header>
        <messagetype>HelloWorld</messagetype>
    </header>
    <body>
        <messageBody>HolaComoEstas!</messageBody>
    </body>
</message>
]
> but was:<<message>[
    <header>
        <messagetype>HelloWorld</messagetype>
    </header>
    <body>
        <messageBody>HolaComoEstas!</messageBody>
    </body>
</message>
] 

知道如何配置 Eclipse 以与 TeamCity Unix 主机相同的方式运行它吗?或者有没有办法让这个单元测试平台独立?

标签: javaeclipseunixjunitteamcity

解决方案


我可以通过打开 git bash 来解决这个问题,转到格式化的 XML 文件的路径(例如 C:/path/to/sample/file/formattedOutput.xml),然后执行 dos2unix 为:

dos2unix.exe ./formattedOutput.xml

所以看起来Mark Rotteveel在上面的评论中是正确的。

谢谢


推荐阅读