gtest简单用法

当前开发环境中,无法把测试代码提交到仓库,所以单测另起一个目录

.
├── gtest
│   ├── CMakeLists.txt # 这是最外层的cmake,用以管理所有内部的cmake
│   └── sample_test # 这是sample_src对应的测试用例,该目录下有一个单独的cmake
│       ├── CMakeLists.txt
│       └── sample_test.cpp
└── repo #这里存储一些代码仓库,下面以sample_src为例子
    └── sample_src

最外层cmake:

cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)

enable_testing()

include_directories(${CMAKE_SOURCE_DIR})

# 子模块,如果有新增直接在这里添加即可
add_subdirectory(sample_test)

sample_test目录下的cmake:

# 寻找系统中安装的gtest,我用的ubuntu用apt直接安装的gtest库
find_package(GTest REQUIRED)

# 源代码和测试代码
set(SRC ${CMAKE_SOURCE_DIR}/../repo/sample_src/sample.cpp
        ${CMAKE_SOURCE_DIR}/sample_test/sample_test.cpp
)

include_directories(${CMAKE_SOURCE_DIR}/../repo)

add_executable(sample_test ${SRC})

# 链接gtest
target_link_libraries(sample_test ${GTEST_LIBRARIES} pthread)

sample_test/sample_test.cpp代码

#include "sample_src/sample.h"

#include <gtest/gtest.h>

TEST( AddTest, HandlesPositiveInput ) {
    EXPECT_EQ( add( 1, 2 ), 3 );
    EXPECT_EQ( add( 10, 20 ), 30 );
}

TEST( AddTest, HandlesNegativeInput ) {
    EXPECT_EQ( add( -1, -1 ), -2 );
    EXPECT_EQ( add( -10, -20 ), -30 );
}

// main函数就直接放在这里
int main( int argc, char** argv ) {
    ::testing::InitGoogleTest( &argc, argv );
    return RUN_ALL_TESTS();
}

两个被测代码文件
sample_src/sample.h:

#pragma once
int add( int a, int b );

sample_src/sample.cpp:

#include "sample_src/sample.h"
int add( int a, int b ) {
    return a + b;
}

编译之后的样子:

$ ll
总计 40K
-rw-rw-r-- 1 kun kun  15K 12月 20 20:45 CMakeCache.txt
drwxrwxr-x 5 kun kun 4.0K 12月 20 20:45 CMakeFiles
-rw-rw-r-- 1 kun kun 1.8K 12月 20 20:45 cmake_install.cmake
-rw-rw-r-- 1 kun kun  290 12月 20 20:45 CTestTestfile.cmake
-rw-rw-r-- 1 kun kun 4.7K 12月 20 20:45 Makefile
drwxrwxr-x 3 kun kun 4.0K 12月 20 20:45 sample_test

执行结果

posted @ 2024-12-20 20:46  feipeng8848  阅读(1)  评论(0编辑  收藏  举报