使用测试优先方法开发用户界面
2008-01-19 20:24:54 来源:WEB开发网核心提示:请注意,这里测试的数据都是mockEditor里的,使用测试优先方法开发用户界面(8),而且在UI进行添加操作后,还将mockEditor内部的状态与期待状态做了比较,我们使测试代码和外部复杂的资源隔离开来,同时也使我们能够从中既有代码中提炼出清晰的接口,CPPUNIT_ASSERT_EQUAL(MovieNamesW
请注意,这里测试的数据都是mockEditor里的,而且在UI进行添加操作后,还将mockEditor内部的状态与期待状态做了比较。
CPPUNIT_ASSERT_EQUAL(MovieNamesWithAddition.GetSize(), m_pEditor->GetMovies()->GetSize());
CPPUNIT_ASSERT_EQUAL(LOST_IN_SPACE, m_pEditor->GetMovies()->GetAt(nIndex-1));
其他删除操作的测试跟添加类似,在此不做详述。至此,我们就完成了这个GUI应用程序的开发。所有的测试如图2所示:
图2
6、源码说明
本文附带的代码包括三个Project,分别是Movie、GuiTestFirst、AppMovieList.Movie是产品代码.GuiTestFirst是测试代码 。AppMovieList是使用Movie输出的产品代码而写的应用程序,它从MovieListEditor继承出一个新的影片管理类MyEditor。它主要是演示如何使用我们提炼出来的MovieListEditor接口 。例如你可以实现CXmlMovieListEditor,CAccessMovieListEditor等等。进入GuiTestFirst打开所有这些工程。AppMovieList运行如图3所示 :
图3
7、总结
a)、对GUI应用实施测试优先开发方法,这在测试驱动开发中并不是必须的,可根据开发的实际情况来选择。
b)、我们通过引入Mock Objects,我们使测试代码和外部复杂的资源隔离开来,同时也使我们能够从中既有代码中提炼出清晰的接口,使代码整洁可用。
8、参考资料
- 《测试驱动开发实用指南(影印版)》David Astels
- 《测试驱动开发(中文版)》Kent Beck
- 《Endo-Testing: Unit Testing with Mock Objects》Tim Mackinnon, Steve Freeman, Philip Craig
更多精彩
赞助商链接