unit-testing - 您如何使用 TDD 设计复杂系统?

标签 unit-testing tdd

类似于 Does TDD mean not thinking about class design? ,我很难考虑传统的“设计”阶段适合 TDD 的位置。

根据保龄球游戏 Kata(“对话”版本,其链接目前让我无法理解),TDD 似乎忽略了早期做出的设计决策(丢弃框架对象、滚动对象等)。我可以在那个例子中看到遵循测试并忽略您最初的设计想法是个好主意,但是在更大的项目或您想要为扩展/定制留出空间的项目中,把东西放进去不是更好吗?您没有测试或不需要立即进行测试以避免以后耗时的重写?

简而言之 - 在进行 TDD 时有多少设计太多了,以及在编写测试和通过它们的代码时我应该遵循该设计多少(忽略我的设计,只担心通过测试)?

或者我什么都不担心,并且如果您陷入困境,那么简单地为了遵循测试而编写的代码(在实践中)并不难重写或重构?
或者,我是否忽略了这一点,并且当我开始测试新的功能部分时,我应该期望重写部分代码?

最佳答案

我会将您的测试基于您的初始设计。在许多方面,TDD 是一个发现过程。您可以期待确认您的早期设计选择,或者发现您可以做出更好的选择。尽可能多地进行前期设计。有些人喜欢坐在椅子上做高级设计并使用 TDD 来充实设计。而其他人则喜欢先把所有东西都写在纸上。

TDD 的一部分是重构。

关于unit-testing - 您如何使用 TDD 设计复杂系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494961/

相关文章:

python - 杀死模拟对象 : A Python Story

c++ - VS2012:单元测试错误:Assert::AreEqual(object, object) 无效

php - PHP 中的测试驱动开发

c# - 在编写单元测试时,你怎么知道要测试什么?

unit-testing - 可以使用哪些技术使编写测试更有趣?

python - 如何用Python实现自动化测试?

unit-testing - 所以..我需要对团队进行单元测试培训 - 可以在类(class)计划中使用 C&C

cakephp - CakePHP 中的测试驱动开发

javascript - 如何测试函数是否调用特定的方法/函数?

java - 为什么使用 JUnit 进行测试?