单元测试 – 在编写测试时,YAGNI是否也适用?

当我编写代码时,我只需要我需要的功能.

这种方法也适用于写测试吗?

我应该提前为每个使用情况写一个测试,我可以想到只是为了安全起见,还是应该只在我遇到用例时写一个用例的测试?

我认为当你编写一个方法时,你应该测试预期的和潜在的错误路径.这并不意味着您应该扩展您的设计以涵盖所有潜在的用途 – 在需要的时候留下,但您应该确保您的测试在面对无效参数或其他条件时定义了预期的行为.

据了解,YAGNI意味着您不应该开发尚不需要的功能.在这个意义上,你不应该写一个测试,驱使你开发不需要的代码.我怀疑,这不是你所问的.

在这方面,我会更加关心你是否应该编写涵盖意想不到的用途的测试 – 例如,由于传递空值或范围参数导致的错误 – 或重复仅对数据有所不同的测试,而不是功能.在前一种情况下,如上所述,我会说是的.您的测试将记录您的方法在面对错误时的预期行为.这是使用您的方法的人的重要信息.

在后一种情况下,我不太能给你一个明确的答案.你当然希望你的测试保持干涸 – 不要写一个简单地重复测试的测试,即使它有不同的数据.或者,您可能不会发现潜在的设计问题,除非您锻炼数据的边缘案例.一个简单的例子是一个计算两个整数的总和的方法:如果将maxint作为两个参数传递,会发生什么?如果你只有一个测试,那么你可能会错过这个行为.显然这与前一点有关.只有确实需要测试才能确定.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...