标签: failing-tests

TDD - 什么时候可以写一个非失败的测试?

根据我的理解,在TDD中你必须首先编写一个失败的测试,然后编写代码使其通过,然后重构.但是,如果您的代码已经考虑了您要测试的情况怎么办?

例如,假设我是TDD的排序算法(这只是假设).我可能会为几个案例编写单元测试:

输入= 1,2,3
输出= 1,2,3

输入= 4,1,3,2
输出= 1,2,3,4
等...

为了让测试通过,我最终使用了一个快速的肮脏的泡泡排序.然后我重构并用更有效的合并排序算法替换它.后来,我意识到我们需要它是一个稳定的类型,所以我也为此编写了一个测试.当然,测试永远不会失败,因为merge-sort是一种稳定的排序算法!无论如何,我仍然需要这个测试,因为有人再次重构它以使用不同的,可能不稳定的排序算法.

这是否打破了始终编写失败测试的TDD口头禅?我怀疑有人会建议我浪费时间来实现一个不稳定的排序算法,只是为了测试测试用例,然后重新实现merge-sort.你经常遇到类似的情况,你做了什么?

tdd failing-tests

8
推荐指数
2
解决办法
1941
查看次数

你如何应对失败的单元测试?

我在解决方案文件中有许多项目,这些项目都为它们编写了单元测试,我希望将它们设置为由我们的持续集成服务器运行.但是,由于许多测试写得不好而且没有经常运行,因此有许多测试失败了.

我目前没有时间修复所有测试,但我相信现有测试运行是有价值的.处理失败的单元测试的最佳方法是什么?

我目前正在做的是将每个失败的测试标记为Explicit并留下TODO评论.

[Test, Explicit] //TODO: Rewrite this test because it fails
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?或者我应该在将它们包含在CIS运行的测试之前修复所有测试吗?

nunit unit-testing failing-tests

3
推荐指数
2
解决办法
731
查看次数

标签 统计

failing-tests ×2

nunit ×1

tdd ×1

unit-testing ×1