不要让测试因失败而停止
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" 个别断言失败,累积它们并仅在测试完成后报告。链接文档部分使用了一个很好的示例,绝对值得一读。
我正在寻找以下(简化)场景的最佳实践:
@Test
public void someTest() {
for(String someText : someTexts) {
Assert.true(checkForValidity(someText));
}
}
此测试遍历 x 千个文本,在这种情况下,我不希望它在每次失败时都停止。我希望对错误进行缓冲,以防错误最终失败。 JUnit 是否为我的目标准备了一些东西?
首先,这并不是真正正确的实现方式。 JUnit 通过使用 Parametrized
测试运行器定义 inputs/outputs 的集合来允许 parametrizing 测试。这样做可以确保每个测试用例都成为一个唯一的实例,使测试报告清楚地说明哪些样本通过了哪些样本失败了。
如果您仍然坚持按照自己的方式去做,您应该看看 AssertJ 的 Soft Assertions,它允许 "swallowing" 个别断言失败,累积它们并仅在测试完成后报告。链接文档部分使用了一个很好的示例,绝对值得一读。