如何比较 JUnit 测试用例中的文件?

2022-09-02 01:21:52

我想在我正在做的一个小项目上实现JUnit,因为我想学习一些关于它的知识。

我阅读的教程都引用了具有特定输出的方法。

在我的情况下,我的输出是文件,我该怎么做?任何简单的例子?任何可以帮助我的方法?

这些文件是由 void 私有方法生成的原始文本文件。


答案 1

您希望为一组给定的输入获取正确的输出文件,并设置一个测试以使用这些输入调用 void 方法,然后将经过验证的输出文件与方法生成的内容进行比较。您需要确保有某种方法来指定方法的输出位置,否则您的测试将非常脆弱。

@Rule
public TemporaryFolder folder = new TemporaryFolder();

@Test
public void testXYZ() {
    final File expected = new File("xyz.txt");
    final File output = folder.newFile("xyz.txt");
    TestClass.xyz(output);
    Assert.assertEquals(FileUtils.readLines(expected), FileUtils.readLines(output));
}

使用 commons-io FileUtils 进行方便的文本文件比较,并使用 JUnit 的 TemporaryFolder 来确保在测试运行之前输出文件永远不存在。


答案 2

使用 junitx.framework.FileAssert class from junit-addons project。其他链接:

方法之一:

assertEquals(java.lang.String message,
             java.io.Reader expected,
             java.io.Reader actual) 

推荐