主页 > 新开诛仙私服 >

什么是一个好的测试 -

发表日期:2019-06-09

许多开发人员认为他们知道如何编写一个好的测试,但根据我的经验,很少有开发人员真的这样做。它们测试代单元而不是行为单元,它们的测试依赖于实现,并在重构代时中断。不是为开发人员提供安全网来在重构时捕获错误,而是在代更改时这些测试会中断,即使行为没有改变。不是在重构时支持我们,而是依赖于实现的测试最终会导致额外的工作。

良好的测试定义行为而不指定实现细节。它陈述了它想要的结果,而不是如何得到它。例如,如果文档可以被排序,我们可以通过传入未排序的文档来编写测试,并验证我们获取的文档是否已排序。该文档并不关心它是如何排序的,只是它已经排序。如果我们以后添加一个业务规则, 对于100行以下的文档使用快速排序,否则使用冒泡排序, 我们添加两个测试,一个用于验证快速排序被选中用于排序文档99行长,并为100行长的文档选择另一个验证冒泡排序的测试。

在这种情况下,由于我们正在测试边界,我们需要两个测试,一个在边界之下,一个在上面。我们通常在边界上选择值,在这种情况下,99为以下,100为以上。请注意,我们没有98的测试,因为它的行为类似于99的测试。同样,我们没有101的测试,因为它的行为与100的测试相同。

如果我们构建我们的排序算法测试优先,那么我们可能会有测试进入 sort 的实现,但这不是Document的关注。从文档的角度来看,它只关注文档是否在调用sort之后进行排序,从文档工厂的角度来看,它只关心根据文档中的行数调用正确的排序算法。这些是单独的问题,最终是的,与实现无关的测试。

上一篇:汤姆克兰西的HAWX 2独家动手

下一篇:Steam用户评论将不再计入“非主题评论炸弹”

相关内容: