1
14
既然您提到了MFC,我假设您的应用程序很难在自动化测试工具下运行。在编写代码时构建测试时,您将看到单元测试框架的最佳好处。。但是,试图以测试驱动的方式将新特性添加到不可测试的应用程序中。。可以是艰苦的工作和令人沮丧的。 现在我要提出的是 艰苦的工作 .. 但只要有一些纪律和毅力,你很快就会看到好处。
最简单的办法是我以前的回答。这是一条艰难但正确的出路。 |
2
14
这取决于应用程序的结构。如果逻辑和GUI代码是分离的(MVC),那么测试逻辑就很容易了。看看迈克尔·费瑟 "Humble Dialog Box" (PDF)。 编辑:如果你仔细想想:如果应用程序不是这样构造的,你应该非常小心地重构。没有其他测试逻辑的技术。模拟点击的脚本只是表面现象。 其实很简单: 假设当用户单击按钮时,您的控件/窗口/任何更改列表框内容的控件,并且您希望确保列表框在单击后包含正确的内容。
就这样。控制器包含逻辑代码,仅通过接口了解控制。现在,您可以通过模拟控件为MyController::ButtonWasClicked()编写常规单元测试。如果你不知道我在说什么,请阅读迈克尔的文章。两次在那之后。
|
3
5
我意识到这是一个过时的问题,但是对于那些仍然与MFC一起工作的人来说,VS2012中的微软C++单元测试框架工作得很好。 一般程序:
|
4
3
虽然不是完美的,但我发现最好的是AutoIt http://www.autoitscript.com/autoit3 “AutoIt v3是一种类似于基本免费软件的脚本语言,旨在实现Windows GUI和通用脚本的自动化。它结合使用模拟击键、鼠标移动和窗口/控件操作,以其他语言(如VBScript和SendKeys)无法实现或不可靠的方式自动化任务.AutoIt也非常小,是独立的,可以在所有开箱即用的Windows版本上运行,无需烦人的“运行时” 当您有权访问被驱动的应用程序的源代码时,这种方法很有效,因为您可以使用要驱动的控件的资源ID号。这样,您就不必担心在特定像素上模拟鼠标点击。不幸的是,在遗留应用程序中,您可能会发现资源ID不是唯一的,这可能会导致问题。然而将ID更改为唯一并重新生成是非常简单的。 另一个问题是,您将遇到计时问题。对于这些问题,我没有一个行之有效的解决方案。我使用的是反复试验,但这显然是不可扩展的。问题在于,AutoIT脚本必须等待测试应用程序响应命令,然后脚本才会发出下一个命令或检查正确的响应。有时,要找到一个方便的事件来等待和观看并不容易。 我的感觉是,在开发一个新的应用程序时,我会坚持使用一致的方式来表示“就绪”。这将有助于人类用户以及测试脚本!对于遗留应用程序来说,这可能是一个挑战,但也许您可以在有问题的地方引入它,并随着维护的继续慢慢将其扩展到整个应用程序。 |
5
2
|
6
1
我们在工作场所有一个巨大的MFC应用程序。这是一个巨大的痛苦,以维持或延长。。。它现在是一个大泥球,但它会在沼地里耙
嗯 |
7
0
实际上,我们一直在使用RationalTeamTest,然后是Robot,但在最近与Rational的讨论中,我们发现他们没有计划支持更多关注.NET的原生x64应用程序,所以我们决定切换自动化QA工具。这很好,但许可成本不允许我们为所有开发人员启用它。 我们所有的应用程序都支持一个用于脚本编写的COM API,我们通过VB对其进行回归测试,但这不会测试应用程序本身的API。 理想情况下,我会对人们如何在开发人员级别将cppunit和类似的单元测试框架集成到应用程序中感兴趣。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |