Qt Creator中的单元测试(非Qt)C++代码

Unit testing (non-Qt) C++ code in Qt Creator?

本文关键字:Qt C++ 代码 单元测试 Creator      更新时间:2023-10-16

我有一个C++项目不使用Qt。我使用QtCreator作为我的IDE,因为它非常方便。

我在这里读到了QtCreator中的单元测试,我认为Qt测试看起来很好。有没有一种方法可以在我的非Qt C++项目中使用Qt Test?

请注意,我的电脑上安装了Qt库,我正在用它来编程。但我不希望我发布的编译程序依赖于Qt库。

此外,我在使用Visual Studio时喜欢的一个功能是,每次构建项目时,测试都会自动运行。我可以用Qt Creator做同样的事情吗?

顺便说一句,如果你能提出另一个我可以在QtCreator中轻松使用的单元测试框架,那也没关系。

您也可以使用GTest:在Qt Creator中对(非Qt)C++代码进行单元测试

https://github.com/google/googletest/

使用这个伟大的QtCreator插件:

https://github.com/OneMoreGres/qtc-gtest

我从QTest切换到GTest(用于测试Qt应用程序)有几个原因,例如有一个很好的图形输出和使用模拟框架(GMock)的能力。

实际上从未尝试在QtCreator中对非qt代码进行单元测试,但代码的qt性质无关紧要。我会这么做:

  1. 以正常的非qt项目为例
  2. 添加subdir类型的父项目,使其行为与visual studio解决方案类似
  3. 在父项下添加另一个项目,这是一个qt测试项目,即

    QT  += testlib
    CONFIG += qtestlib
    
  4. 找到一种在两者之间共享资源的方法。您可以使用源文件的相对路径添加源文件,创建静态库,或者为非qt和qttestlib项目使用pri文件(项目头文件)。

使用此配置,通过构建顶级项目,您将构建正常项目并运行测试。

对于subdir项目,您从ctrl+N获得的模板并不是很有用。但是顶级项目文件可以像一样简单

include (commonsrc.pri)
TEMPLATE = subdirs
CONFIG  += ordered
SUBDIRS += appdir
SUBDIRS += testingdir

这就是我的一个项目的最高级别。

为了避免麻烦,请将文件夹层次结构与子目录层次结构相匹配。例如

solutiondir
     commondir
     appdir
     testingdir
     commonsrc.pri <--- allow you to write commondirmycpp.cpp in any project

您可以尝试Boost的单元测试框架

http://www.boost.org/doc/libs/1_55_0/libs/test/doc/html/index.html