我开始走上使用单元测试来开发应用程序的崇高之路,但这证明是一条陡峭而艰难的道路。我正在使用Qt开发一个应用程序,所以想要使用他们的QTestLib框架。现在,我知道如何编写单元测试,但我似乎无法弄清楚如何将单元测试整合到项目中。
假设我有一个控制台应用程序,它只有一个main.cpp文件和一个cpp和h文件,用于开发一个类,比如MyClass。我想,正确的做法应该是创建一个相应的测试类MyClassTest,其中包含它的h和cpp文件。但是我应该将它放入同一个项目中吗?还是创建一个仅用于单元测试的单独项目,该项目将访问“主”项目中的文件(还不确定如何做到这一点)?
如果主应用程序和测试都在同一个项目中,那么我该如何运行测试而不运行应用程序,或者反过来呢?我尝试将Qt教程1中关于单元测试的文件合并到控制台项目中,但问题在于它们使用一个宏QTEST_MAIN(TestQString)
,该宏会扩展为一个main(...)
函数。这会与main.cpp中的main(...)
产生冲突。好吧,我可以将其中一个重命名,但问题仍存在——那么我如何运行测试或应用程序本身?如果我覆盖QTEST_MAIN
宏(这是个坏主意),我会禁用测试。如果我在main.cpp中重命名main(...)
函数,则实际应用程序永远不会被执行。我想,应该有一种方法可以为项目创建两个单独的可执行文件,一个运行单元测试,另一个启动应用程序,但我无法弄清楚如何进行操作。