C++ 在Qt中进行Gui测试

C++ 在Qt中进行Gui测试,c++,qt,user-interface,C++,Qt,User Interface,我正在尝试对gui应用程序进行压力测试,但我不太确定如何做到这一点。首先,我有一个应用程序,其中包含所有gui和助手函数。我还制作了两个外部库,这个应用程序使用它们。这些库只做一些小事情,我想在qtmook启动并工作时对这些部分进行单元测试(由于某些原因,目前它与qt4.8不兼容) 我希望在不必更改太多代码的情况下对主应用程序进行压力测试。我看了一下QtTestLib,它看起来非常基本,好像您必须将该代码与主代码集成在一起,这是我不想要的。我真的很想把测试放在应用程序之外,想知道怎么做?我不太确

我正在尝试对gui应用程序进行压力测试,但我不太确定如何做到这一点。首先,我有一个应用程序,其中包含所有gui和助手函数。我还制作了两个外部库,这个应用程序使用它们。这些库只做一些小事情,我想在qtmook启动并工作时对这些部分进行单元测试(由于某些原因,目前它与qt4.8不兼容)

我希望在不必更改太多代码的情况下对主应用程序进行压力测试。我看了一下QtTestLib,它看起来非常基本,好像您必须将该代码与主代码集成在一起,这是我不想要的。我真的很想把测试放在应用程序之外,想知道怎么做?我不太确定是否应该将我的enitre gui应用程序导出为可以导入测试的外部库


你通常是如何做到这一点来真正地对整个事情进行压力测试的。不知道我应该如何和在哪里做测试代码,我将感谢任何帮助

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

可以编写自定义测试代码,但仍可以保持被测试应用程序的代码干净。我在一个大的Windows C++ GUI应用程序上做了这个测试,我需要进行自动测试。基本思想是创建一个新项目,引用基础项目中的所有代码,并编写一组新的类,这些类派生自基础类并包含测试代码

在我的例子中,我创建了一个新的VisualStudio项目,但是您可以对一个新的Qt项目执行相同的操作。当然,基类可能需要重构以公开要测试的函数。测试类根据需要调用基类函数——如果需要,可以创建整个测试gui

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

class MyView : public QMainWindow {}
class MyController {}
class MyModel {}
…创建一个新项目,引入基本代码,并添加以下内容:

class TestView       : public MyView {}
class TestController : public MyController {}
class TestModel      : public MyModel {}
最后,在做了一点工作之后,我的基类中没有测试代码,我仍然能够在一个漂亮的测试gui中连接并启动各种重复的自动测试

我并不是说这是一项简单或琐碎的任务。我只是鼓励你,这是可以做到的。:-)


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

你试过squish吗?还没有,但我看了一下。我真的很想通过代码来做这件事,但不知道怎么做,我不知道如何通过代码来做,但我们在我们的项目中使用过一次。它允许为gui的自动测试编写一些脚本。