根据我的经验,您使用的任何测试工具包要么会以微妙的方式将自己融入您的代码,要么永远无法达到您需要的深度(或两者兼而有之)。
可以编写自定义测试代码,并且仍然为正在测试的应用程序保持代码清洁。我是在一个需要自动测试的大型 Windows C++ gui 应用程序上完成的。基本思想是创建一个新项目,引用基础项目中的所有代码,并编写一组新的类,这些类派生自基类并包含您的测试代码。
就我而言,我创建了一个新的 Visual Studio 项目,但您可以对新的 Qt 项目执行相同的操作。当然,基类可能必须重构以公开要测试的功能。测试类根据需要调用基类函数 - 如果需要,您可以创建整个测试 gui。
作为一个非常简单的例子,如果这是你的项目......
class MyView : public QMainWindow {}
class MyController {}
class MyModel {}
...创建一个新项目,拉入您的基本代码,然后添加这些:
class TestView : public MyView {}
class TestController : public MyController {}
class TestModel : public MyModel {}
最后,经过一些工作,零测试代码在我的基类中,我仍然能够在一个漂亮的测试 gui 中连接并启动各种重复的自动测试。
我并不是说这是一项简单或微不足道的任务。我只是鼓励你,这是可以做到的。:-)
编辑:这不是对嵌入式单元测试的批评,如果您可以从项目开始就将其落实到位,那就太好了。但这是一个大型遗留应用程序,我没有将测试代码注入基本代码是一个硬性要求。