不要让测试因失败而停止

Don't let test stop on failure

我正在寻找以下(简化)场景的最佳实践:

@Test
public void someTest() {
  for(String someText : someTexts) {
    Assert.true(checkForValidity(someText));
  }
}

此测试遍历 x 千个文本,在这种情况下,我不希望它在每次失败时都停止。我希望对错误进行缓冲,以防错误最终失败。 JUnit 是否为我的目标准备了一些东西?

首先,这并不是真正正确的实现方式。 JUnit 通过使用 Parametrized 测试运行器定义 inputs/outputs 的集合来允许 parametrizing 测试。这样做可以确保每个测试用例都成为一个唯一的实例,使测试报告清楚地说明哪些样本通过了哪些样本失败了。

如果您仍然坚持按照自己的方式去做,您应该看看 AssertJ 的 Soft Assertions,它允许 "swallowing" 个别断言失败,累积它们并仅在测试完成后报告。链接文档部分使用了一个很好的示例,绝对值得一读。