【发布时间】:2020-07-21 15:21:36
【问题描述】:
我是测试驱动开发的新手,但我正在开发一个新应用程序。我已经创建了一些基本功能,但认为这可能是开始使用测试驱动开发的好机会。我正在使用此基本大纲编写测试要求以涵盖主要功能(感谢wikipedia):
- 设置
- 执行
- 验证
- 清理
然后,当我开始编写测试代码时,我将遵循以下工作流程:
- 添加测试
- 运行所有测试并验证新测试是否失败
- 编写代码以使新测试通过(快速/肮脏,技术债务在这里很好)
- 运行所有测试并验证所有通过
- 重构代码以反映最佳实践、更易于维护等。
我了解测试应该相互独立,但是在为应用程序的特定功能 (B) 编写测试时,当该功能依赖于应用程序的不同功能 (A) 的功能时,就会出现问题由不同的测试覆盖。功能 B 的测试假设功能 A 的功能是可操作的是否合适?还是手动执行功能 A 在功能 B 测试的测试代码中执行的任何步骤会更好?当功能 A 中存在错误时会发生什么?这会破坏这两个测试,并且可能会导致关于问题所在的一些歧义。对我来说,正确的选择似乎是不允许功能 B 测试运行功能 A,但我可能最终会在功能 B 测试代码中复制功能 A 代码。否则测试代码可能会变得太大或无法维护。
【问题讨论】:
标签: unit-testing tdd theory