Google Test(通常称为 gtest)是一个用于C++的流行的单元测试框架。以下是使用gtest的一般步骤:
-
安装 Google Test:
首先,您需要下载并安装 Google Test。您可以从 Google Test 的 GitHub 仓库中获取源代码,然后编译它,或者使用包管理工具(如CMake或Conan)来安装它。以下是使用CMake安装的示例步骤:-
克隆 Google Test 仓库:
git clone https://github.com/google/googletest.git
-
使用CMake构建和安装Google Test:
cd googletest mkdir build cd build cmake .. make sudo make install
这将安装Google Test到系统中,以便您可以在您的项目中使用它。
-
-
创建测试项目:
在您的C++项目中,创建一个测试项目或测试目录,用于存放测试文件。通常,您将在这个目录中编写测试用例和测试代码。 -
编写测试用例:
使用gtest编写测试用例。一个典型的gtest测试用例如下:#include <gtest/gtest.h> // 测试用例定义 TEST(TestCaseName, TestName) { // 测试代码 EXPECT_EQ(1, 1); ASSERT_TRUE(true); } int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
在这个示例中,我们定义了一个名为
TestCaseName
的测试用例,其中包含一个名为TestName
的测试。您可以在TEST
宏中编写测试代码,并使用gtest提供的断言来验证测试结果。 -
编译测试项目:
使用编译工具(如CMake、Make、Visual Studio等)编译测试项目。确保链接到gtest库。通常,您需要添加以下链接标志:-lgtest -lgtest_main
如果您使用CMake,可以在CMakeLists.txt文件中添加以下内容:
find_package(GTest REQUIRED) add_executable(MyTests test.cpp) target_link_libraries(MyTests GTest::GTest GTest::Main)
-
运行测试:
编译后,运行测试项目可执行文件。gtest将运行所有测试用例,并输出测试结果。
这是一个基本的gtest使用示例。您可以根据项目的需要编写更复杂的测试用例,并使用gtest的各种断言来验证代码的正确性。
Google Test(也称为 gtest)提供了多种断言宏,用于在测试中检查各种条件和约束。以下是一些常用的 Google Test 断言宏以及它们的作用:
-
ASSERT_TRUE(condition)
:如果condition
为真,测试继续执行;如果为假,测试失败。 -
ASSERT_FALSE(condition)
:如果condition
为假,测试继续执行;如果为真,测试失败。 -
ASSERT_EQ(val1, val2)
:检查val1
和val2
的值是否相等。 -
ASSERT_NE(val1, val2)
:检查val1
和val2
的值是否不相等。 -
ASSERT_LT(val1, val2)
:检查val1
是否小于val2
。 -
ASSERT_LE(val1, val2)
:检查val1
是否小于或等于val2
。 -
ASSERT_GT(val1, val2)
:检查val1
是否大于val2
。 -
ASSERT_GE(val1, val2)
:检查val1
是否大于或等于val2
。 -
ASSERT_STREQ(str1, str2)
:检查 C 风格字符串str1
和str2
是否相等。 -
ASSERT_STRNE(str1, str2)
:检查 C 风格字符串str1
和str2
是否不相等。 -
ASSERT_STRCASEEQ(str1, str2)
:不区分大小写地检查 C 风格字符串str1
和str2
是否相等。 -
ASSERT_STRCASENE(str1, str2)
:不区分大小写地检查 C 风格字符串str1
和str2
是否不相等。 -
ASSERT_THROW(statement, exception_type)
:检查statement
是否会引发exception_type
异常。 -
ASSERT_NO_THROW(statement)
:检查statement
是否不会引发任何异常。 -
ASSERT_PRED1(predicate, val)
:使用用户提供的谓词函数predicate
检查val
是否满足条件。 -
ASSERT_PRED2(predicate, val1, val2)
:使用用户提供的谓词函数predicate
检查val1
和val2
是否满足条件。