当我编写代码时,我只编写我需要的函数。
这种方法也适用于编写测试吗?
为了安全起见,我应该提前为我能想到的每个用例编写测试,还是应该只为遇到的用例编写测试?
我认为当你编写一个方法时,你应该测试预期的和潜在的错误路径。这并不意味着您应该扩展您的设计以涵盖所有潜在用途 - 将其留到需要时使用,但您应该确保您的测试已经定义了面对无效参数或其他条件时的预期行为。
据我了解,YAGNI 的意思是您不应该开发尚不需要的功能。从这个意义上说,您不应该编写一个测试来促使您开发不需要的代码。不过,我怀疑这不是您要问的。
在这种情况下,我更关心的是您是否应该编写涵盖意外用途的测试 - 例如,由于传递 null 或超出范围的参数而导致的错误 - 或者重复仅在数据方面有所不同的测试,而不是在功能方面有所不同。对于前一种情况,正如我上面指出的,我会说是的。您的测试将记录您的方法在出现错误时的预期行为。这对于使用您的方法的人来说是重要的信息。
对于后一种情况,我不太能给你明确的答案。您当然希望您的测试保持 DRY —— 不要编写一个简单地重复另一个测试的测试,即使它有不同的数据。或者,除非您运用数据的边缘情况,否则您可能不会发现潜在的设计问题。一个简单的例子是计算两个整数之和的方法:如果传递它会发生什么maxint
作为两个参数?如果您只有一次测试,那么您可能会错过这一行为。显然,这与上一点有关。只有您才能确定何时确实需要进行测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)