gtest入门
一、gtest简介#
gtest
是一个跨平台(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)
的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测试而生成的。
gtest下载网站
https://github.com/google/googletest
二、gtest的编译#
下载好gtest-1.7.0.zip之后解压
cd googletest
mkdir build
cmake -G Ninja ..
ninja
build/lib目录下生成libgtest.a和libgtest_main.a库
三、gtest使用#
3.1、新建项目#
(base) ➜ maingtest tree
.
├── CMakeLists.txt
└── main.cpp
3.2、将gtest资源放到项目中#
将项目中的build/lib文件夹和googletest/include文件夹
(base) ➜ maingtest tree
.
├── CMakeLists.txt
├── include
│ └── gtest
│ ├── ...
│ ├── gtest.h
│ └── internal
│ ├── custom
│ │ ├── ...
│ │ └── gtest.h
│ ├── ...
│ └── gtest-type-util.h
├── lib
│ ├── libgtest.a
│ └── libgtest_main.a
└── main.cpp
首先修改CMakeLists.txt
cmake_minimum_required(VERSION 3.22)
project(maingtest)
set(CMAKE_CXX_STANDARD 14)
include_directories(include)
link_directories(lib)
add_executable(maingtest main.cpp)
target_link_libraries(
maingtest
libgtest.a
)
修改main.cpp
#include "gtest/gtest.h"
int add(int a,int b){
return a+b;
}
TEST(fun, add){
EXPECT_EQ(1, add(2,-1));
}
int main(int argc, char** argv){
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
在maingtest目录下
(base) ➜ maingtest mkdir build
(base) ➜ maingtest cd build
(base) ➜ build cmake -G Ninja ..
-- The C compiler identification is AppleClang 13.0.0.13000027
...
-- Build files have been written to: /Users/.../.../maingtest/build
(base) ➜ build ninja
[2/2] Linking CXX executable maingtest
(base) ➜ build ls
CMakeCache.txt CMakeFiles build.ninja cmake_install.cmake maingtest
(base) ➜ build ./maingtest
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from fun
[ RUN ] fun.add
[ OK ] fun.add (0 ms)
[----------] 1 test from fun (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.
可以看到成功的进行了测试并且通过了一个test单元测试。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!