不幸的是,我在Windows上运行了一个GUI桌面应用程序,并使用Borland C ++编译器进行编译。我知道这是一项非常古老的技术,但这就是生活。我工作的公司有很多免费的QTP许可证。但说实话,我不喜欢这个工具,我想用一些开源替代方案来改变它。
我使用Selenium和一些java swing applet来体验自动化Web服务。 我基于Java / JUnit创建了测试。我想知道我是否可以在Java中创建一些测试来测试我的C ++应用程序 - 这会很棒。如果我不能使用任何C / C ++库来创建我自己的测试框架。
那不应该是单元测试。我想创建一套功能测试。 我希望能够本地化按钮,表格,单元格等对象,执行点击,更改焦点等操作。
另外我可以访问源代码。但这是一个旧的意大利面条代码,我对C ++应用程序没有多少经验。
你有什么建议?
答案 0 :(得分:5)
开源工具
White是一个基于.NET的UI自动化工具,可以自动执行其他类型的win32应用程序。只要您的应用程序中使用的控件使用Windows的标准UIAutomation挂钩公开其内容/行为,那么您应该能够使用它来执行您所需的操作。
UIAutomation Verify是另一个CodePlex项目,它使用相同的API来自动化符合UIA的UI。
Visual Studio
最后,如果您有权访问它,那么Visual Studio 2010具有内置于Premium / Ultimate版本的脚本UI测试功能 - Coded UI Tests。这支持具有记录/重放和脚本功能的.NET,本机和Web应用程序。
答案 1 :(得分:5)
我们使用Sikuli并对此非常满意。它在各种自动化API之外工作,因此它可以很好地处理非标准UI。
答案 2 :(得分:1)
我同意Robert的看法,QTP有时候不是最好的工具,特别是当你希望它等待桌面应用程序完成处理时。 QTP命令不是同步的,这意味着QTP不会等到上一个命令完成执行,然后再转到下一个调用。我们遇到了很多问题。我们现在计划编写一个可以为QTP执行此操作的c#dll,并将其包含在我们的QTP程序中,以使QTP动态等待,直到Desktop应用程序完成其处理。目前,据我所知,QTP不支持这样的等待功能。
此外,回到对象识别问题,我们确实遇到了很多问题,并采用了通过QTP中的按键使用助记符来调用命令的替代路径。正如Simon已经提到的,这可能是由于GUI元素没有曝光。我们在这方面没有太多控制权,所以我们没有对此进行进一步调查。
答案 3 :(得分:0)