Do Gui在Qt测试

chi*_*uba 14 c++ user-interface qt

我正在努力压力测试一个gui应用程序,我不太清楚如何做到这一点.首先,我有一个应用程序,其中所有的gui和帮助程序函数都位于其中.我还有两个外部库,我已经制作了这个应用程序使用的.这些库只做很小的事情,我想在QtMock启动和工作时对这些部件进行单元测试(目前由于某些原因,它与qt 4.8不兼容).

我想强调测试主应用程序,而不必更改太多的代码.我看了一下QtTestLib,它看起来很基本,好像你必须将代码与主代码集成,我不想要.我真的想在应用程序之外保持测试,并想知道如何做到这一点?不太确定我是否应该将我的enitre gui应用程序导出为外部库,我可以导入到我的测试中?

你通常如何做到这一点来真正压力测试整个事情.不知道我应该如何以及在哪里做测试代码,我将不胜感激任何帮助!

moo*_*oom 6

根据我的经验,您使用的任何测试工具包要么以微妙的方式使用自己的代码,要么永远不会达到您需要的深度(或两者兼而有之).

可以编写自定义测试代码,并且仍然可以为正在测试的应用程序保持代码清洁.我是在一个需要自动测试的大型Windows C++ gui应用程序上完成的.基本思想是创建一个新项目,引用基础项目中的所有代码,并编写一组新的类,这些类派生自基类并包含您的测试代码.

在我的例子中,我创建了一个新的Visual Studio项目,但你可以用一个新的Qt项目做同样的事情.当然,可能必须重构基类以公开要测试的函数.测试类根据需要调用基类函数 - 如果需要,可以创建整个测试gui.

作为一个非常简单的例子,如果这是你的项目......

class MyView : public QMainWindow {}
class MyController {}
class MyModel {}
Run Code Online (Sandbox Code Playgroud)

...创建一个新项目,提取基本代码,并添加以下内容:

class TestView       : public MyView {}
class TestController : public MyController {}
class TestModel      : public MyModel {}
Run Code Online (Sandbox Code Playgroud)

最后,经过一些工作,我的基类中没有测试代码,我仍然可以在一个不错的测试gui中绑定并触发各种重复的自动测试.

我不是说这是一项简单或微不足道的任务.我只是鼓励你,它可以做到.:-)

编辑:这不是对嵌入式单元测试的批评,如果你能从项目一开始就把它搞定,那就很好了.但这是一个很大的遗留应用程序,并且我没有将测试代码注入基本代码是一项艰难的要求.