我过去曾讨论过这个话题,我想我可能知道答案,但我无法正确地表达出来。
这是我认为我所知道的:
如果您在编写测试之前已经有了关于事情如何工作的想法,那么我怀疑您是测试优先而不是测试驱动,因此您首先编写测试来测试您的想法,然后再实现您的想法。 IE。 你的实现想法是第一位的,并决定测试的样子。
如果您是测试驱动的,那么您会尝试让测试来驱动实现的样子。您为所需的某些行为编写测试,而不是先入为主的实现想法,因此您必须在“重构”阶段提出实现才能顺利通过测试。
我的问题是:
- 我的理解正确吗?
- 当大多数开发者在伸手触摸键盘之前就自然地开始在脑海中探索解决方案时,如何从测试优先的思维方式转变为测试驱动的思维方式?
最佳答案
测试驱动开发的关键方面是您不会实现不需要通过测试的功能。测试优先只是意味着在实现功能之前编写测试。这样做主要是为了确保如果功能不存在,测试实际上会失败。测试驱动开发意味着测试优先的方法,但反之则不然。
关于unit-testing - 了解 "test-first"和 "test-driven"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673449/