我有一个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性质无关紧要。我会这么做:
- 以正常的非qt项目为例
- 添加subdir类型的父项目,使其行为与visual studio解决方案类似
-
在父项下添加另一个项目,这是一个qt测试项目,即
QT += testlib CONFIG += qtestlib
-
找到一种在两者之间共享资源的方法。您可以使用源文件的相对路径添加源文件,创建静态库,或者为非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