繁体   English   中英

在项目中使用QT单元测试-主要(…)功能冲突

[英]Using QT Unit Tests in a project - conflicting main(…) functions

我迈出了使用单元测试开发应用程序的崇高道路上的第一步,但事实证明这是一个艰难而艰难的过程。 我正在Qt中开发应用程序,因此可以考虑使用其QTestLib框架。 现在,我了解了如何进行单元测试,但是似乎无法弄清楚如何将单元测试合并到项目中。 假设我有一个控制台应用程序,它只有一个main.cpp以及一个我要开发的类的cpp和h文件,例如MyClass。 我想正确的做法是使用h和cpp文件创建相应的测试类MyClassTest。 但是我应该把它放在同一个项目中吗? 还是只为单元测试创​​建一个单独的项目,该项目就可以访问“主”项目中的文件(不确定该怎么做)?

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

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

我使用此博客上介绍的非常方便的测试运行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM