java - JUnit:比较两个无序文本文件的内容

标签 java junit comparison file-comparison

我想编写一个单元测试来将方法的文本文件输出与预期值进行比较。但是,我不希望将测试限制为在比较中具有精确的行排序要求。是否有一种优雅的方法可以在 Java/Junit 中编写此类测试,或者我必须为此任务编写自己的逻辑?

谢谢!

设置jmp

最佳答案

我建议您将被测方法的返回值和期望值转换为两个字符串列表,每行一个字符串。

然后可以使用 AssertJ 轻松比较两个列表。在测试列表上的断言时,我发现它是一个很棒的工具:

@Test
public void shouldContainSameLines() throws IOException {
  List<String> actualLines = ClassUnderTest.loadText();

  List<String> expectedLines = asList("Hello", "World", "Goodbye");
  assertThat(actualLines)
      .containsAll(expectedLines);
}

assertThat() 是 AssertJ 的 Fluent API 的入口点。根据传递给 assertThat() 的方法的类型,提供合理的验证。在本例中,我使用 containsAll() 来测试 actualLines 是否包含 expectedLines 中以任何顺序排列的所有行。

关于java - JUnit:比较两个无序文本文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334127/

相关文章:

java - mock - 意外的期望 - 不知道我做错了什么

java - Junit 测试用例因抽象方法而失败

java - NoClassDefFoundError : org/codehaus/jackson/Versioned using Jackson JSON parser

java - 将 HTTPOnly cookie 与 android 中的其他 cookie 区分开来

java - 使用 Gson 将 JSON 反序列化为对象

java - 如何比较两条曲线(点数组)

java - 在Java中测试服务层的void方法

php - 如何将 SQL 数据库中的字符串与 PHP 变量进行比较

php - 比较 2 个数组并删除相似的值

字符串比较中的C++字符