我认为当你编写一个方法时,你应该测试预期的和潜在的错误路径.这并不意味着您应该扩展您的设计以涵盖所有潜在的用途 – 在需要的时候留下,但您应该确保您的测试在面对无效参数或其他条件时定义了预期的行为.
据了解,YAGNI意味着您不应该开发尚不需要的功能.在这个意义上,你不应该写一个测试,驱使你开发不需要的代码.我怀疑,这不是你所问的.
在这方面,我会更加关心你是否应该编写涵盖意想不到的用途的测试 – 例如,由于传递空值或范围参数导致的错误 – 或重复仅对数据有所不同的测试,而不是功能.在前一种情况下,如上所述,我会说是的.您的测试将记录您的方法在面对错误时的预期行为.这是使用您的方法的人的重要信息.
在后一种情况下,我不太能给你一个明确的答案.你当然希望你的测试保持干涸 – 不要写一个简单地重复测试的测试,即使它有不同的数据.或者,您可能不会发现潜在的设计问题,除非您锻炼数据的边缘案例.一个简单的例子是一个计算两个整数的总和的方法:如果将maxint作为两个参数传递,会发生什么?如果你只有一个测试,那么你可能会错过这个行为.显然这与前一点有关.只有确实需要测试才能确定.