gcc : Apple clang version 11.0.3 (clang-1103.0.32.62)
cmake : version 3.19.1
如何为该项目运行样本测试?
如何调试这些测试和项目的源代码?
/Users/apple/Desktop/cUnittest
└─cUnittest/
├─ CMakeLists.txt
├─ myfunctions.h
└─ mytests.cpp
googletest
到当前目录下这里需要说明下,gtest可以使用cmake安装的,默认安装到目录/usr/local/include/gtest
使用git命令下载gtest:
git clone https://github.com/google/googletest.git -b release-1.10.0
这时目录下结构:
└─cUnittest/
├─ googletest/
├─ CMakeLists.txt
├─ myfunctions.h
└─ mytests.cpp
CMakeLists.txt
内容cmake官网 mac下安装(brew install cmake
)
# cmake的最小版本号,对应的还有max, 设置项目的cmake最低要求版本
cmake_minimum_required(VERSION 3.12)
# 项目名称:倒没什么影响,但是cmake会默认设置一些变量,所以
project(gUnittest)
# 包含GTest的库文件, 这里是个相对路径
add_subdirectory(googletest)
# 包含的目录,这样就能用 #include , 这里可以对比find_package()方法,有技巧的哦
include_directories(googletest/include)
# 添加一个测试:名称和可执行文件
add_executable(mytests mytests.cpp)
# 链接库文件,必须在上一句的后面,会有依赖关系的
target_link_libraries(mytests PRIVATE gtest)
myfunctions.h
文件内容#ifndef _ADD_H
#define _ADD_H
int add(int a, int b)
{
return a + b;
}
#endif
mytests.cpp
文件内容#include
#include "myfunctions.h"
TEST(myfunctions, add)
{
GTEST_ASSERT_EQ(add(10, 22), 32);
}
int main(int argc, char* argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
现在可以尝试这去运行测试文件,因为是配合vs code
使用,用它打开文件夹/Users/apple/Desktop/cUnittest
进行编译操作,命令行打开,创建文件夹build
mkdir build
这是个时候目录为:
└─cUnittest/
├─ build/
├─ googletest/
├─ CMakeLists.txt
├─ myfunctions.h
└─ mytests.cpp
打开文件CMakeLists.txt
,编辑器会有提示,安装一个插件CMake Tools
extension for VS Code, 安装完毕后,在当前目录下会多一个文件夹.vscode
,点击打开目录下的 settings.json
文件,在里面添加一句下面的内容:
"cmake.configureSettings": { "gtest_build_samples": "ON" }
留意一下编辑器下边栏有一排按钮:
可以点击按钮进行build和run了。
CMakeLists.txt
编辑状态下,ctrl + s
就会自动build;CMakeLists.txt
配置;└─ MyGtest/
├─ src # 项目源码
│ ├── CMakeLists.txt # 组织源码相关的数据,包含了动态链接库文件什么的
│ ├── functions.cpp
│ ├── methods.h
├─ test # 测试目录
│ ├── CMakeLists.txt # 解决gtest库依赖、关联src源码、组织test代码、一些特殊的编译运行指令等等
│ ├── test_func_a.cpp
│ ├── test_func_b.cpp
│ └── main.cpp
└─ CMakeLists.txt # 管理src和test项目目录
备注一个新的CMakeLists.txt
# version can be different 设置项目的cmake最低要求版本
cmake_minimum_required(VERSION 3.12)
# 因为gtest用了c++11,编译的时候一定要加c++11
set(CMAKE_CXX_COMPILER "c++")
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")
project(gUnittest)
#包含GTest的库文件
add_subdirectory(googletest)
include_directories(googletest/include)
#一些调试信息
message(gtest_include_dir=${GTEST_INCLUDE_DIR})
message(gtest_library=${GTEST_LIBRARY})
message(threads=${CMAKE_THREAD_LIBS_INIT})
add_executable(mytests test_call.cpp test_inner.cpp)
#链接gtest_simple_lib,这个是src项目生成的静态库
#链接${GTEST_LIBRARY},这个是gtest的库文件
#链接${CMAKE_THREAD_LIBS_INIT},即-lpthread
target_link_libraries(mytests PUBLIC gtest ${CMAKE_THREAD_LIBS_INIT})
加了c++11相关指令,为了避免问题:
error: no member named 'tuple' in namespace 'std'