我想编写一个单元测试来将方法的文本文件输出与预期值进行比较。但是,我不希望将测试限制为在比较中具有精确的行排序要求。是否有一种优雅的方法可以在 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/