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
接下来,我们创建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);
}
然后,我们写一个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)
最后,我们可以使用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
统计结果如下:
参考阅读
发表评论