在项目中使用QT单元测试 - 冲突的主(...)函数

Puc*_*tek 10 c++ qt unit-testing qt-creator

我在使用单元测试开发应用程序的高尚道路上迈出了第一步,但事实证明它是一个陡峭而粗糙的应用程序.我正在Qt中开发一个应用程序,所以想到达到他们的QTestLib框架.现在,我理解如何进行单元测试,但我似乎无法弄清楚如何将单元测试纳入项目.假设我有一个控制台应用程序,它只有一个main.cpp和一个cpp和h文件,用于我想要开发的类,比如MyClass.我想正确的做法是用h和cpp文件创建一个相应的测试类MyClassTest.但是我应该把它放到同一个项目中吗?或者更确切地说,为单元测试创​​建一个单独的项目,可以访问"main"项目中的文件(不知道我该怎么做)呢?

如果主应用程序和测试都在同一个项目中,如何在不运行应用程序的情况下运行测试或反之?我尝试将Qt教程1中的单元测试文件合并到一个控制台项目中,但问题在于它们使用的宏QTEST_MAIN(TestQString)扩展为一个main(...)函数.这会导致与main(...)main.cpp中的冲突.好吧,我可以重命名任何一个,但问题仍然存在 - 我如何运行测试或应用程序本身?如果我覆盖QTEST_MAIN宏(无论如何这是一个坏主意)我禁用测试.如果我main(...)在main.cpp中重命名函数,那么实际的应用程序永远不会被执行.我想应该有一种方法可以为项目制作两个单独的可执行文件,一个运行单元测试,另一个启动应用程序,但无法弄清楚如何去做.

Arn*_*nce 8

绝对为您的测试创建一个单独的项目.如果您将应用程序项目和测试项目安排在并排目录中,则应该能够使用test.pro文件中的相对路径从应用程序项目中引用代码单元.

我使用本博客上提供的非常方便的测试运行器.