我一直在ASP.NET MVC项目工作了8个月。大多数情况下,我一直在使用TDD,但是在写完实际的代码之后,有些方面才被单元测试所覆盖。总的来说,这个项目的测试覆盖率很高。关于如何编写重构友好的单元TDD测试技巧
我对目前的结果很满意。重构真的非常容易,我的测试甚至在我第一次运行我的软件之前帮助我发现了很多错误。另外,我开发了更复杂的假货和帮手,以帮助我最小化测试代码。
不过,我真的不喜欢的是事实,我经常发现自己不得不更新现有的单元测试来占我的软件做的重构。重构软件现在是快速和无痛的,但重构我的单元测试是相当无聊和乏味的。实际上,维护我的单元测试的成本要高于首先编写它们的成本。
我不知道我是否会做错了什么,或者如果测试开发的成本,这种关系与测试维护正常。我已经尝试写尽可能多的测试,以便覆盖我的用户故事,而不是系统地覆盖我的对象界面,如this blog article中所建议的。
另外,你对如何编写TDD的测试,使重构的假期,因为一些测试尽可能任何进一步的提示吗?
编辑:正如Henning和tvanfosson正确指出的那样,它通常是编写和维护成本最高的设置部分。根据我的经验,破坏性测试通常是对域模型进行重构的结果,与这些测试的设置部分不兼容。
你可以举一个具体的例子来说明你的代码是如何重构你的单元测试的?虽然有时会发生这种情况,但我个人并不认为真正的“单元”测试应该受到重构的影响(除了移动一些测试和/或为编写代码编写新测试之外)。我意识到这不是一个非常有用的答案,我希望具体的例子可能会导致一个。 – kdgregory 2010-01-13 12:40:02