JUnit 5 比较失败,尽管 IntelliJ 合同
JUnit 5 comparison fails, though IntelliJ contracts
我有一个比较两个列表的简单 JUnit 5 测试用例。
JUnit 未通过测试,但在查看差异时,IntelliJ 似乎自相矛盾 - 参见图片。
我错过了什么?
更新:
这是测试
@Test
@DisplayName("Comma separated ids over different lines")
public void commaSeparatedOverLines() throws IOException {
Path idFile = writeRequirementsFile("ID-234, ID-567" +
System.lineSeparator() + "ID-456");
List<String> list = new JiraLocalRequirementsReader().readRequirementsId(idFile.toString(), System.lineSeparator());
assertEquals(Arrays.asList("ID-234", "ID-567", "ID-456"), list);
}
和 SUT
public class JiraLocalRequirementsReader {
public List<String> readRequirementsId(String file, String separator) throws IOException {
Path path = Paths.get(file);
List<String> strings = Files.readAllLines(path);
if (separator.equals(System.lineSeparator())) {
return trimResult(strings.stream());
}
return trimResult(strings.stream().flatMap(s -> Arrays.stream(s.split(separator))));
}
private List<String> trimResult(Stream<String> input) {
return input.map(String::trim).collect(Collectors.toList());
}
}
我找到了罪魁祸首,我使用的分隔符是 lineSeparator
,它没有拆分前两个 id(因此 toString
看起来也是正确的)。这个想法是使用 ,
,它可以正确地分割线。
至此,测试通过,测试成功。
抱歉打扰了,问题开头不好。
我有一个比较两个列表的简单 JUnit 5 测试用例。
JUnit 未通过测试,但在查看差异时,IntelliJ 似乎自相矛盾 - 参见图片。
我错过了什么?
更新:
这是测试
@Test
@DisplayName("Comma separated ids over different lines")
public void commaSeparatedOverLines() throws IOException {
Path idFile = writeRequirementsFile("ID-234, ID-567" +
System.lineSeparator() + "ID-456");
List<String> list = new JiraLocalRequirementsReader().readRequirementsId(idFile.toString(), System.lineSeparator());
assertEquals(Arrays.asList("ID-234", "ID-567", "ID-456"), list);
}
和 SUT
public class JiraLocalRequirementsReader {
public List<String> readRequirementsId(String file, String separator) throws IOException {
Path path = Paths.get(file);
List<String> strings = Files.readAllLines(path);
if (separator.equals(System.lineSeparator())) {
return trimResult(strings.stream());
}
return trimResult(strings.stream().flatMap(s -> Arrays.stream(s.split(separator))));
}
private List<String> trimResult(Stream<String> input) {
return input.map(String::trim).collect(Collectors.toList());
}
}
我找到了罪魁祸首,我使用的分隔符是 lineSeparator
,它没有拆分前两个 id(因此 toString
看起来也是正确的)。这个想法是使用 ,
,它可以正确地分割线。
至此,测试通过,测试成功。
抱歉打扰了,问题开头不好。