C++ CMake与单元测试框架GTest

编写简单的单元测试

项目目录如下:
在这里插入图片描述

  1. 从上到下第一个文件CMakeLists.txt 是主文件。内容如下:
cmake_minimum_required(VERSION 3.14)
project(main)
include_directories(include) # 包含函数头文件,通常需要将函数头文件和函数实现分开放置
add_subdirectory(src) # 添加函数实现,函数实现中需要CMakeLists说明函数如何编译
add_subdirectory(test) #测试代码目录,如何测试在次目录下说明
add_executable(main main.cpp) #主程序

enable_testing() # 开启单元测试,make test
target_link_libraries(main add) # 主程序编译的代码(和测试代码分开编译)。

  1. include目录下只包含一个简单的头文件add.h
#ifndef ADD_H
#define ADD_H
int add(int a, int b);
#endif
  1. main.cpp内容如下:
#include "add.h"
#include <iostream>
using namespace std;
int main(){
    int a = 1,b = 2;
    cout<<add(a,b)<<endl;
}
  1. src/add.cpp文件内容:
#include "add.h"
int add(int a, int b) { 
    int c = a+b;
    return c; }

  1. src/CMakeLists.txt文件内容:
include_directories(${CMAKE_SOURCE_DIR}/include) #方便查找头文件,如果不指定会出现找不到头文件的问题
add_library(add SHARED add.cpp) # 编译动态库,生成liadd.so
  1. test/CMakeLists.txt文件内容如下

cmake_minimum_required(VERSION 3.14)
enable_testing()
find_package(GTest REQUIRED) #查找GTest的动态库
include_directories(${GTEST_INCLUDE_DIR})#Gtest的头文件
include_directories(${CMAKE_SOURCE_DIR}/include)#添加需要使用的函数add的头文件搜索路径
set(test_name test_demo)# 设置test名称
add_executable(${test_name} test.cpp) #生成测试文件
target_link_libraries(${test_name} ${GTEST_BOTH_LIBRARIES} add) #链接测试依赖库
add_test(
    Name ${test_name}
    COMMAND ${test_name}
)# 时make test生效
  1. test/test.cpp文件内容
#include <gtest/gtest.h>
#include <vector>
#include "add.h"
using namespace std;
TEST(MyTest,add){
    vector<int> a = {1,2,3,4,5};
    vector<int> b = {5,6,7,8,9};
    int current = 6;
    for(int i=0;i<a.size();i++){
        EXPECT_EQ(add(a[i],b[i]),current);
        current+=2;
    }
}
int main(int argc,char* argv[]){
    ::testing::InitGoogleTest(&argc,argv);
    return RUN_ALL_TESTS();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值