C++在Mac中如何进行单元测试

212 阅读1分钟

本篇博文主要讲解如何使用cmake的ctest结合google test进行单元测试。

前置说明:

  1. ctest本身并不能进行单元测试,需要结合测试框架如gtest,当然也可以结合其它的测试框架或者自己进行实现。
  2. 需要先安装gtest的库,可以使用brew安装获取自行编译

自行编译流程

  1. 克隆google test仓库
  2. cd googletest
  3. mkdir build && cd build
  4. cmake ..
  5. make
  6. make install

第6步可能权限不够

项目结构说明:

  • cpp_test
    • CMakeLists.txt
    • ctests
      • CMakeLists.txt
      • text.cpp
    • src
      • include
        • calculate.h
      • source
        • calculate.cpp
      • main.cpp
    • build

代码详情:

文件路径:CMakeLists.txt

cmake_minimum_required(VERSION 3.5.0)

project(gtest VERSION 0.1.0 LANGUAGES C CXX)

add_subdirectory(tests)
add_executable(gtest_main

src/main.cpp

src/include/calculate.h

src/source/calculate.cpp

文件路径:src/include/calculate.h

#ifndef CALCUATE_H_
#define CALCUATE_H_

template<class T>
T add(T a,T b){
    return a + b;
}

template<class T>
T sub(T a,T b){
    return a - b;
}

#endif

文件路径:tests/CMakeLists.txt

cmake_minimum_required(VERSION 3.5.0)
add_executable(tests test.cpp)
#链接测试库
find_package(GTEST REQUIRED)
target_link_libraries(tests GTest::GTest GTest::Main)
add_test(NAME tests COMMAND tests)

文件路径:tests/tests.cpp

#include "../src/include/calculate.h"
#include <gtest/gtest.h>

TEST(calculate,add){
    EXPECT_EQ(add(1,2),5);
}

int main(int argc,char * argv[]){
    ::testing::InitGoogleTest(&argc,argv);
    return RUN_ALL_TESTS();
}

文件路径:main.cpp

int main(){
    return 0;
}

然后我们前往build目录

  1. 执行cmake ..
  2. 执行make
  3. cd 到 测试可执行文件目录 cd tests
  4. 执行测试命令 ./tests
  5. 查看执行结果

本篇完结