将文本文件与 Junit 进行比较

2022-08-31 20:22:34

我正在使用以下内容比较 junit 中的文本文件:

public static void assertReaders(BufferedReader expected,
          BufferedReader actual) throws IOException {
    String line;
    while ((line = expected.readLine()) != null) {
        assertEquals(line, actual.readLine());
    }

    assertNull("Actual had more lines then the expected.", actual.readLine());
    assertNull("Expected had more lines then the actual.", expected.readLine());
}

这是比较文本文件的好方法吗?什么是首选?


答案 1

以下是检查文件是否完全相同的一种简单方法:

assertEquals("The files differ!", 
    FileUtils.readFileToString(file1, "utf-8"), 
    FileUtils.readFileToString(file2, "utf-8"));

其中 和 是实例,FileUtils 来自 Apache Commons IOfile1file2File

没有太多自己的代码供您维护,这始终是一个加分项。:)如果您已经碰巧在项目中使用Apache Commons,则非常容易。但是没有像Mark的解决方案那样的漂亮,详细的错误消息。

编辑
呵呵,仔细看看API,有一种更简单的方法FileUtils

assertTrue("The files differ!", FileUtils.contentEquals(file1, file2));

作为奖励,此版本适用于所有文件,而不仅仅是文本。


答案 2

junit-addons对它有很好的支持:FileAssert

它为您提供了例外情况,例如:

junitx.framework.ComparisonFailure: aa Line [3] expected: [b] but was:[a]