如何与网站建立私密关系,如何在网站上做qq群链接,动画制作的基本流程,怎么做网站地图导航概述
第十二章围绕单元测试展开#xff0c;阐述了单元测试的实践与重要性#xff0c;通过对比其他测试类型#xff0c;突出其特点#xff0c;还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容#xff0c;为编写高质量单元测试提供指导。
章节概要
1…概述
第十二章围绕单元测试展开阐述了单元测试的实践与重要性通过对比其他测试类型突出其特点还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容为编写高质量单元测试提供指导。
章节概要
1. 单元测试的重要性
单元测试是测试中范围较窄的类型通常针对单个类或方法。 单元测试通过快速、确定性的测试帮助工程师提高生产力。 单元测试应覆盖代码的核心逻辑确保代码变更不会引入缺陷。
2. 测试的可维护性
测试代码应尽量减少维护成本只在必要时更新。 测试的脆弱性如因无关变更而失败会显著增加维护负担。 测试应通过公共API进行避免依赖实现细节。
3. 防止脆弱测试
不变的测试测试代码应尽量减少变更除非系统行为发生变化。 通过公共API测试测试应模拟系统的真实使用方式。 测试状态而非交互关注系统的最终状态而不是内部交互过程。
4. 编写清晰的测试
测试的完整性和简洁性测试代码应包含所有必要信息同时避免无关细节。 基于行为的测试测试应关注系统的具体行为而不是方法的实现。 清晰的测试结构测试应明确包含“给定”、“当”、“则”三个部分。 有意义的测试名称测试名称应清晰描述被测试的行为。 避免测试中的逻辑测试代码应尽量避免复杂的逻辑保持简单直接。 清晰的失败信息测试失败时应提供明确的错误信息。
5. 测试代码的共享DAMP优于DRY
测试代码应优先追求描述性和有意义而不是完全避免重复。 测试代码的共享应通过辅助方法实现而不是依赖全局变量或复杂的初始化逻辑。
6. 测试基础设施
测试基础设施如测试框架或工具应标准化以提高测试的可维护性。 测试基础设施本身也需要测试以确保其正确性和稳定性。
总结
单元测试是软件工程师确保系统在面对未预见变更时仍能正常工作的强大工具。通过遵循本章介绍的最佳实践测试可以显著提高代码质量减少维护成本。Google的单元测试实践表明清晰、稳定且易于维护的测试是提高开发效率的关键。
精彩语录
1.“测试的主要目的是防止缺陷其次是提高工程师的生产力。” “After preventing bugs, the most important purpose of a test is to improve engineers’ productivity.” 解释单元测试通过快速反馈帮助工程师快速定位问题从而提高开发效率。 2.“测试的可维护性是关键好的测试应该‘一劳永逸’。” “Maintainable tests are ones that ‘just work’: after writing them, engineers don’t need to think about them again until they fail.” 解释测试代码应尽量减少维护成本只在必要时更新。 3.“测试应该通过公共API进行而不是依赖于实现细节。” “Test via Public APIs.” 解释通过公共API测试可以减少测试的脆弱性确保测试与系统的实际使用方式一致。 4.“测试状态而不是交互。” “Test state, not interactions.” 解释关注系统的最终状态比关注内部交互更能反映系统的实际行为。 5.“测试的清晰性至关重要测试失败时工程师应能迅速定位问题。” “A clear test is one whose purpose for existing and reason for failing is immediately clear to the engineer diagnosing a failure.” 解释清晰的测试能够快速帮助工程师理解测试的意图和失败的原因。 6.“测试应关注行为而不是方法。” “Test behaviors, not methods.” 解释基于行为的测试比基于方法的测试更清晰、更稳定。 7.“测试代码应遵循DAMP原则而不是DRY原则。” “Tests and Code Sharing: DAMP, Not DRY.” 解释测试代码应优先追求“描述性和有意义”而不是完全避免重复。