GoogleTest


常见用法

定义测试用例

TEST宏创建一个测试用例,第一个参数是测试套件的名称,第二个参数是测试用例的名称。测试用例的名称必须是唯一的,否则会报错。
EXPECT相关的宏用于检查测试用例的预期结果,如果预期结果和实际结果不一致,那么测试用例会失败,但是会继续往下执行。ASSERT相关的宏用于检查测试用例的预期结果,如果预期结果和实际结果不一致,那么测试用例会失败,并且后续的测试用例不会执行。

// meta_test.cpp
#include <gtest/gtest.h>
TEST(TestSuiteName, TestName)
{
  // test body
  EXPECT_EQ(1, 1);
  ASSERT_EQ(1, 1);
}

运行测试用例

我们可以编写一个一个CMakeLists.txt来运行测试。首先是获取gtest的源码,然后编译测试文件,并链接gtest。运行时在build目录底下输入ctest即可运行所有的test。

# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)

# set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
include(GoogleTest)

add_executable(meta_test meta_test.cpp)
target_link_libraries(meta_test GTest::gtest_main pmss)
# target_include_directories(meta_test PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
gtest_discover_tests(meta_test)

Author: 蒋璋
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source 蒋璋 !