tit*_*nae 17 c++ tdd user-interface mfc unit-testing
如何对大型MFC UI应用程序进行单元测试?
我们有一些大型MFC应用程序已经开发多年,我们使用一些标准的自动化QA工具来运行基本脚本来检查基础,文件打开等.这些由QA小组在每日构建后发布.
但我们想介绍一些过程,以便各个开发人员可以在将代码提交到每日构建之前,根据对话框,菜单和应用程序的其他可视元素构建和运行测试.
我听说过只有在调试版本中出现的对话框上的隐藏测试按钮等技术,是否有任何标准工具包.
环境是C++/C/FORTRAN,MSVC 2005,Intel FORTRAN 9.1,Windows XP/Vista x86和x64.
Gis*_*shu 13
既然你提到了MFC,我假设你有一个很难在自动化测试工具下使用的应用程序.在编写代码时构建测试时,您会发现单元测试框架的最大好处.但是尝试以测试驱动的方式将新功能添加到不是可测试的应用程序中......可能很难并且非常令人沮丧.
现在我要提出的建议绝对是艰苦的工作 ......但是有了一些纪律和毅力,你很快就能看到好处.
简单的出路是我之前的回答.这是艰难但正确的出路.
Eri*_*fer 12
这取决于应用程序的结构.如果逻辑和GUI代码是分开的(MVC),那么测试逻辑很容易.看看Michael Feathers "Humble Dialog Box"(PDF).
编辑:如果你考虑一下:如果应用程序没有这样的结构,你应该非常仔细地重构.没有其他技术可以测试逻辑.模拟点击的脚本只是在表面上划伤.
这实际上非常简单:
当用户单击按钮并且您希望确保列表框包含单击后的正确内容时,假设您的控件/窗口/无论何种更改列表框的内容.
而已.控制器包含逻辑代码,仅通过接口知道控制.现在,您可以通过模拟控件为MyController :: ButtonWasClicked()编写常规单元测试.如果您不知道我在说什么,请阅读Michaels的文章.两次.之后再说.
(自我注意:必须学会不要那么多)
我意识到这是一个过时的问题,但对于我们这些仍在使用 MFC 的人来说,VS2012 中的 Microsoft C++ 单元测试框架运行良好。
一般程序:
该/sf/ask/80243691/有,为什么需要nafxcwd.lib和libcmtd.lib一个很好的说明.
在遗留项目中检查的另一件重要事情。在常规配置属性中,确保两个项目都使用相同的“字符集”。如果您的 MFC 使用多字节字符集,您也需要 MS 测试来这样做。