Nunit: `TestCaseSource` 生成器的空结果应该无法通过测试

创建于 2020-06-03  ·  3评论  ·  资料来源: nunit/nunit

使用[TestCaseSource(nameof(GeneratorMethod))]时,如果生成器不产生任何输入,则使测试失败(或将其标记为已跳过)是有意义的。 至少不要将测试显示为通过:/

最有用的评论

需要考虑的几点...

  1. 可以有多个来源,因此我们需要明确讨论是否适用于 __each__ 来源或所有来源的汇总结果。

  2. 源生成测试,而不仅仅是数据。 如果没有生成测试,那么就没有什么可以失败或跳过的。 在遥远的过去(V2),我们生成了一个虚假的失败测试,​​最终导致代码混乱并且让用户感到困惑。

  3. 没有案例的测试方法有点像没有代码的方法。 也像没有测试的夹具。 我们认为那些通过。

  4. 如果您将测试称为理论,那么如果没有通过案例,您将失败。

我会投票支持离开当前的行为,但如果没有生成任何案例,则可以给用户某种方式来询问警告消息。

所有3条评论

如果记忆有用,由于几年前的错误报告,它可以正常工作,这使我们确信它应该在这种情况下通过。

😢

我刚刚用(当前)源代码中的一个项目编写了一个测试,并且,作为 TDD 周期中的一个新测试,我预计它会失败,结果却发现它通过了......所以我不得不追踪我的故障生成器。

也许失败有点严厉(我的偏好,但可能对上一期的记者来说很烦人)。 将测试标记为已跳过怎么样?

需要考虑的几点...

  1. 可以有多个来源,因此我们需要明确讨论是否适用于 __each__ 来源或所有来源的汇总结果。

  2. 源生成测试,而不仅仅是数据。 如果没有生成测试,那么就没有什么可以失败或跳过的。 在遥远的过去(V2),我们生成了一个虚假的失败测试,​​最终导致代码混乱并且让用户感到困惑。

  3. 没有案例的测试方法有点像没有代码的方法。 也像没有测试的夹具。 我们认为那些通过。

  4. 如果您将测试称为理论,那么如果没有通过案例,您将失败。

我会投票支持离开当前的行为,但如果没有生成任何案例,则可以给用户某种方式来询问警告消息。

此页面是否有帮助?
0 / 5 - 0 等级