Clion + GoogleTest实现单元测试
Posted shmilyt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clion + GoogleTest实现单元测试相关的知识,希望对你有一定的参考价值。
环境准备
下载googletest源码
https://github.com/google/googletest/releases/tag/release-1.10.0
应用到项目
这里只使用googletest功能:
CmakeList.txt
# cmake最低版本号要求
cmake_minimum_required(VERSION 3.14)
# 项目名
project(Main)
set(CMAKE_CXX_STANDARD 14)
# 添加头文件
include_directories(
$CMAKE_CURRENT_SOURCE_DIR/include
$CMAKE_CURRENT_SOURCE_DIR/googletest/include
)
# 添加下级目录,生成.a文件
add_subdirectory(./googletest)
# 添加连接库
link_directories(
$CMAKE_CURRENT_SOURCE_DIR/lib
$CMAKE_CURRENT_SOURCE_DIR/googletest
)
set(SOURCE_FLIES
main.cpp
lib/add.cpp
include/add.h
)
# 指定可执行文件的生成位置
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "$CMAKE_CURRENT_SOURCE_DIR/bin")
# 指定生成目标
add_executable(MainTest $SOURCE_FLIES)
# 将目标文件与库文件进行链接
target_link_libraries(MainTest gtest)
add.h和add.cpp就是一个简单的求和函数
main.cpp:
#include "add.h"
#include "gtest/gtest.h"
TEST(TestCase,test1 )
ASSERT_EQ(12,add(4,8));
TEST(TestCase,test2)
EXPECT_EQ(5,add(2,3));
TEST(TestCase,test3)
EXPECT_EQ(3,add(1,2));
int main(int argc, char **argv)
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
执行效果(也可以单独执行某个case)
[QtCratot]_0_0_googletest单元测试
[QtCratot]_0_0_googletest单元测试
创建时间:20210822 16:36:00
获得googletest工程
- 下载googletest工程到本地
- git clone https://github.com/google/googletest.git
创建QT测试工程
-
添加BaseUtil的测试工程
-
选择googletest框架和cmake/qmake管理工程, 推荐qmake
-
执行验证
编写测试用例,及运行后的测试结果
项目整理:GoogleTest可以只留下使用的文件
-
删除没有用的示例和文档来减少文件管理
googletest ├── googlemock │ ├── include │ └── src └── googletest ├── include └── src
googletest ├── googlemock │ ├── include │ │ └── gmock │ │ ├── gmock-actions.h │ │ ├── gmock-cardinalities.h │ │ ├── gmock-function-mocker.h │ │ ├── gmock.h │ │ ├── gmock-matchers.h │ │ ├── gmock-more-actions.h │ │ ├── gmock-more-matchers.h │ │ ├── gmock-nice-strict.h │ │ ├── gmock-spec-builders.h │ │ └── internal │ │ ├── custom │ │ │ ├── gmock-generated-actions.h │ │ │ ├── gmock-matchers.h │ │ │ ├── gmock-port.h │ │ │ └── README.md │ │ ├── gmock-internal-utils.h │ │ ├── gmock-port.h │ │ └── gmock-pp.h │ └── src │ ├── gmock-all.cc │ ├── gmock-cardinalities.cc │ ├── gmock.cc │ ├── gmock-internal-utils.cc │ ├── gmock_main.cc │ ├── gmock-matchers.cc │ └── gmock-spec-builders.cc └── googletest ├── include │ └── gtest │ ├── gtest-death-test.h │ ├── gtest.h │ ├── gtest-matchers.h │ ├── gtest-message.h │ ├── gtest-param-test.h │ ├── gtest_pred_impl.h │ ├── gtest-printers.h │ ├── gtest_prod.h │ ├── gtest-spi.h │ ├── gtest-test-part.h │ ├── gtest-typed-test.h │ └── internal │ ├── custom │ │ ├── gtest.h │ │ ├── gtest-port.h │ │ ├── gtest-printers.h │ │ └── README.md │ ├── gtest-death-test-internal.h │ ├── gtest-filepath.h │ ├── gtest-internal.h │ ├── gtest-param-util.h │ ├── gtest-port-arch.h │ ├── gtest-port.h │ ├── gtest-string.h │ └── gtest-type-util.h └── src ├── gtest-all.cc ├── gtest.cc ├── gtest-death-test.cc ├── gtest-filepath.cc ├── gtest-internal-inl.h ├── gtest_main.cc ├── gtest-matchers.cc ├── gtest-port.cc ├── gtest-printers.cc ├── gtest-test-part.cc └── gtest-typed-test.cc 12 directories, 57 files
-
项目整理:将GoogleTest的配置文件,直接写到pro文件中
# GoogleTest配置 isEmpty(GOOGLETEST_DIR) { warning("Using googletest src dir specified at Qt Creator wizard") message("set GOOGLETEST_DIR as environment variable or qmake variable to get rid of this message") GOOGLETEST_DIR = ../googletest } !isEmpty(GOOGLETEST_DIR): { GTEST_SRCDIR = $$GOOGLETEST_DIR/googletest GMOCK_SRCDIR = $$GOOGLETEST_DIR/googlemock } requires(exists($$GTEST_SRCDIR):exists($$GMOCK_SRCDIR)) !exists($$GOOGLETEST_DIR):message("No googletest src dir found - set GOOGLETEST_DIR to enable.") DEFINES += \\ GTEST_LANG_CXX11 INCLUDEPATH *= \\ $$GTEST_SRCDIR \\ $$GTEST_SRCDIR/include \\ $$GMOCK_SRCDIR \\ $$GMOCK_SRCDIR/include SOURCES += \\ $$GTEST_SRCDIR/src/gtest-all.cc \\ $$GMOCK_SRCDIR/src/gmock-all.cc
以上是关于Clion + GoogleTest实现单元测试的主要内容,如果未能解决你的问题,请参考以下文章