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

时间:2012-03-20 02:24:36

标签: c++ unit-testing qt qt-creator

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

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

1 个答案:

答案 0 :(得分:8)

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

我使用this blog上提供的非常方便的测试跑步者。