在开发用户界面时,您对使用TDD有何看法和经验?
我一直在思考这个问题已有一段时间了,只是无法做出最终决定.我们即将启动一个Silverlight项目,我考虑了TDD 的Microsoft Silverlight单元测试框架,但我不确定如何将该方法应用于UI开发 - 特别是Silverlight.
编辑: 问题是关于使用TDD进行UI开发是否实际,而不是关于如何分离关注点.
试图测试UI组件的确切位置是没有意义的.首先是因为布局是主观的,应该由人类"测试".其次,因为随着UI的变化,你将不断重写你的测试.
同样,除非您正在编写新组件,否则不要自行测试GUI组件.相信框架可以完成它的工作.
相反,您应该测试构成这些组件基础的行为:构成应用程序的控制器和模型.在这种情况下使用TDD可以使您分离关注点,从而使您的模型真正成为一个数据管理对象,而您的控制器确实是一个行为对象,而且它们都没有与UI紧密耦合.
我从UI的角度来看TDD更多来自UI的通过验收标准.在某些圈子中,这被标记为ATDD或验收测试驱动开发.
我在使用TDD for UIs时发现的最大的过度工程是我对使用自动化测试测试外观和感觉问题感到兴奋.我的建议:不要!专注于测试行为:此单击产生这些事件,此数据可用或显示(但不显示它的显示方式).外观和感觉确实是您的独立测试团队的领域.
关键是要将精力集中在"高附加值"活动上.自动样式测试更多的是债务(保持最新)而不是增值.
如果您将逻辑与实际的GUI代码分开,您可以轻松地使用TDD来构建逻辑,如果您需要,也可以在逻辑上构建另一个接口.