TDD测试是否应该首先失败?

Yis*_*hai 10 language-agnostic tdd

作为本回答评论中讨论的后续内容,TDD测试是否应该首先失败?

请考虑以下示例.如果我正在编写LinkedHashSet的实现和一个测试测试,在插入副本之后,原始版本与插入之前的迭代顺序相同,我可能想要添加一个单独的测试,副本根本不在集合中.

第一次测试将首先失败,然后实施.

问题在于,使第一个测试过程的实现很可能使用不同的集合实现来存储数据,所以正如第二个测试已经通过的副作用一样.

我认为看到测试失败的主要目的是确保测试是一个很好的测试(很多次我写了一个测试,我认为会失败,但没有,因为测试写错了).但是,如果您确信您所编写的测试确实测试了某些内容,那么必须确保您以后不会破坏该行为并不值得吗?

Fog*_*ird 10

当然它很有价值,因为它是一个有用的回归测试.在我看来,回归测试比测试新开发的代码更重要.

要说他们必须始终首先失败就是采取超越实际的规则.


Chr*_*nce 7

是的,TDD测试必须在变为绿色(工作)之前失败.否则你不知道你是否有一个有效的测试.

  • 那么你如何解决OP中提出的场景呢? (2认同)