《有效的单元测试》一3.4 小结

    xiaoxiao2023-08-06  171

    本节书摘来自华章出版社《有效的单元测试》一书中的第3章,第3.4节,作者 (芬)Lasse Koskela,更多章节内容可以访问云栖社区“华章计算机”公众号查看

    3.4 小结

    我们从使用测试替身的理由开始,先探讨了测试替身的话题。这些原因背后的共同点是需要隔离被测代码,这样你就能模拟出所有场景,并且测试到代码应该表现出的所有行为。有时,使用测试替身的理由是希望测试运行得更快。采用简单实现的测试替身,通常比它们替换掉的实现要快一到两倍。有时,被测代码依赖于随机或其他不确定的行为,比如时间。这些情况下,测试替身通过将不可预测变得可预测而使测试变得简单。对于模拟某些特殊情况并验证对象的预期行为,测试替身可能是仅有可行方式,而不必仅为了可测性而修改产品代码的设计或暴露细节。除了测试替身带来的好处,我们继续学习了四种测试替身之间的区别:测试桩、伪造对象、测试间谍、模拟对象。极度简约的桩或许最适合切断不相关的协作者。当真实事物难以使用或比较麻烦时,伪造对象提供了闪电般的变换。测试间谍用来访问隐藏的信息和数据,而模拟对象像打了激素的测试间谍,增加了动态配置行为的能力,并验证预期的交互确实会发生。我们从各种测试替身使用的时机和场景开始,以一些测试替身的基本使用指南来结束本章。尤其是,当使用模拟对象时,避免过紧地钉住实现是很重要的。你的Mock应当验证预期行为,而尽量放过行为的具体实现。通常,工具可以提供极大的帮助,而且值得为你的特殊需要以及模拟对象的使用风格来评估最合适的库。最后,选择从外部注入依赖,而不是从被测代码内部硬连接它们,将会带来截然不同的可测性。本章讲了测试替身,第一部分也到此结束。我们现在探讨了编写良好测试的基础。先是理解编写测试的好处,然后了解测试应该具有的属性,接下来操控程序员最基本的测试工具——测试替身——你现在掌握了足够的基本技能,你已经可以开始进一步磨炼了。特别是,你已经准备好开始训练对各种不良测试的感觉,从表现良好到令人头痛,到地板上的臭袜子,甚至是彻头彻尾的维护负担。该是进入第二部分并关注坏味道的时候了。那正是测试坏味道。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)