C++:
编写测试
如何写测试:
使用Google测试框架
对于用C++编写测试,最受欢迎的第三方库之一是Google Test。首先,你需要安装Google Test并将其与你的项目链接。一旦设置完成,你就可以开始编写测试用例了。
#include <gtest/gtest.h>
int add(int a, int b) {
return a + b;
}
TEST(TestSuiteName, TestName) {
EXPECT_EQ(3, add(1, 2));
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
将代码保存在一个文件中,并使用g++编译器编译它,链接Google测试库。如果一切设置正确,运行结果可执行文件将运行测试,如果add
函数按预期工作,你将看到如下内容:
[==========] 运行1个测试,来自1个测试套件。
[----------] 全局测试环境设置。
[----------] 1个测试来自TestSuiteName
[ 运行 ] TestSuiteName.TestName
[ OK ] TestSuiteName.TestName (0 ms)
[----------] TestSuiteName来自1个测试 (总共0 ms)
[==========] 1个测试套件的1个测试已运行。 (总共1 ms)
[ 通过了 ] 1个测试。
使用Catch2
C++的另一个流行测试框架是Catch2。它有一个更简单的语法,并且通常不需要链接库(仅头文件)。这是如何使用Catch2编写一个简单测试的示例:
#define CATCH_CONFIG_MAIN // 这告诉Catch提供一个main() - 只在一个cpp文件中这样做
#include <catch.hpp>
int multiply(int a, int b) {
return a * b;
}
TEST_CASE( "整数相乘", "[multiply]" ) {
REQUIRE( multiply(2, 3) == 6 );
}
编译并运行这个测试后,Catch2提供清晰的输出,指示测试是通过还是失败,以及调试失败所需的任何信息:
===============================================================================
所有测试都已通过 (1个断言在1个测试案例中)
这些例子展示了如何将测试框架集成到你的C++开发工作流中,可以显著提高你的代码的可靠性和可维护性。