1.我们先来创建一个简单的功能函数。假设我们要创建一个函数,用来计算两个整数的和。在src目录中,创建一个文件add.cpp:

// add.cpp
#include "add.h"

int add(int a, int b) {
    return a + b;
}

同时,我们也需要创建相应的头文件add.h:

// add.h
#ifndef ADD_H
#define ADD_H

int add(int a, int b);

#endif

  1. 接下来,我们创建Google Test测试用例。在test目录中,创建一个文件test_add.cpp:
// test_add.cpp
#include "gtest/gtest.h"
#include "add.h"

TEST(AddTest, PositiveNumbers) {
    EXPECT_EQ(add(1, 2), 3);
    EXPECT_EQ(add(100, 200), 300);
}

TEST(AddTest, NegativeNumbers) {
    EXPECT_EQ(add(-1, -2), -3);
    EXPECT_EQ(add(-100, -200), -300);
}

  1. 然后,我们写一个CMakeLists.txt文件,用来编译我们的程序和测试:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyProject)

# Enable testing
enable_testing()

# gtest
include_directories(thirdparty/gtest_1.10.0/include)
link_directories(thirdparty/gtest_1.10.0/lib)

# Add the add function
add_library(add src/add.cpp)
target_include_directories(add PUBLIC src)

# Add the test
add_executable(test_add test/test_add.cpp)
target_link_libraries(test_add gtest_main add)

# Add a test
add_test(NAME AddTest COMMAND test_add)

# Enable code coverage
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
target_link_libraries(add gcov)

  1. 最后,我们可以使用gcov(ubuntu中gcc自带)和lcov(安装命令:sudo apt-get install lcov
    )工具来计算代码覆盖率:
mkdir build
cd build
cmake ..
make
./test_add
lcov --capture --directory . --output-file coverage.info
lcov --list coverage.info

统计结果如下:

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐