【问题标题】:JUnit 5 comparison fails, though IntelliJ contractsJUnit 5 比较失败,尽管 IntelliJ 合同
【发布时间】:2018-02-19 08:56:58
【问题描述】:

我有一个比较两个列表的简单 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());
  }
}

【问题讨论】:

  • 我们错过的是实际测试。您正在检查 ArrayList 引用的相等性,而不是存储在其中的实际值,这将是我的第一个猜测。
  • 你读过 assertArrayEquals 吗?
  • 当您没有向我们展示您的测试代码时,我们很难告诉您您的测试代码出了什么问题。

标签: java intellij-idea junit junit5


【解决方案1】:

我找到了罪魁祸首,我使用的分隔符是lineSeparator,它没有拆分前两个id(因此toString 看起来也是正确的)。这个想法是使用,,它可以正确分割行。

这样,测试是绿色的并且没问题。

很抱歉打扰了这个问题。

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2021-01-05
    • 2013-04-19
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多