当前位置: 首页 > wzjs >正文

厦门 经营性网站备案企业seo整站优化方案

厦门 经营性网站备案,企业seo整站优化方案,莱芜泉网站建设,网站的模板文章目录Google Test 介绍和使用指南主要特性安装 Google Test使用包管理器安装(Linux)使用 CMake 集成基本使用简单测试示例常用断言宏测试夹具(Test Fixtures)参数化测试死亡测试高级特性类型化测试值参数化测试运行测试与 CMak…

文章目录

  • Google Test 介绍和使用指南
    • 主要特性
    • 安装 Google Test
      • 使用包管理器安装(Linux)
      • 使用 CMake 集成
    • 基本使用
      • 简单测试示例
      • 常用断言宏
      • 测试夹具(Test Fixtures)
      • 参数化测试
      • 死亡测试
    • 高级特性
      • 类型化测试
      • 值参数化测试
    • 运行测试
    • 与 CMake 集成示例
    • 最佳实践

Google Test 介绍和使用指南

Google Test(通常缩写为 gtest)是 Google 开发的一个 C++ 测试框架,用于编写和运行单元测试。它是目前最流行的 C++ 测试框架之一,具有丰富的功能和良好的跨平台支持。

主要特性

  1. 丰富的断言:提供多种断言宏用于验证测试结果
  2. 测试夹具:支持测试夹具(Test Fixtures)来共享测试设置和清理代码
  3. 参数化测试:支持参数化测试,可以用不同的参数运行相同的测试逻辑
  4. 死亡测试:可以测试程序是否按预期方式终止
  5. 跨平台:支持 Linux、Windows、Mac 等多种平台
  6. 与构建系统集成:易于与 CMake、Bazel 等构建系统集成

安装 Google Test

使用包管理器安装(Linux)

# Ubuntu/Debian
sudo apt-get install libgtest-dev# 编译并安装
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib

使用 CMake 集成

现代 CMake 项目可以通过 FetchContent 直接引入 Google Test:

include(FetchContent)
FetchContent_Declare(googletestURL https://github.com/google/googletest/archive/refs/heads/main.zip
)
FetchContent_MakeAvailable(googletest)

基本使用

简单测试示例

#include <gtest/gtest.h>// 测试函数
int Add(int a, int b) {return a + b;
}// 定义一个测试用例
TEST(TestAdd, PositiveNumbers) {EXPECT_EQ(Add(2, 3), 5);
}TEST(TestAdd, NegativeNumbers) {EXPECT_EQ(Add(-2, -3), -5);
}int main(int argc, char **argv) {testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();
}

常用断言宏

Google Test 提供两类主要断言:

  1. ASSERT_ 系列:失败时立即终止当前测试
  2. EXPECT_ 系列:失败时继续执行当前测试

常用断言:

  • EXPECT_EQ(val1, val2):验证相等
  • EXPECT_NE(val1, val2):验证不等
  • EXPECT_TRUE(condition):验证条件为真
  • EXPECT_FALSE(condition):验证条件为假
  • EXPECT_LT(val1, val2):验证 val1 < val2
  • EXPECT_LE(val1, val2):验证 val1 <= val2
  • EXPECT_GT(val1, val2):验证 val1 > val2
  • EXPECT_GE(val1, val2):验证 val1 >= val2
  • EXPECT_STREQ(str1, str2):验证字符串相等
  • EXPECT_THROW(statement, exception_type):验证抛出特定异常

测试夹具(Test Fixtures)

测试夹具允许你在多个测试间共享设置和清理代码:

class VectorTest : public testing::Test {
protected:void SetUp() override {v1.push_back(1);v2.push_back(2);v2.push_back(3);}void TearDown() override {// 清理代码}std::vector<int> v1;std::vector<int> v2;
};TEST_F(VectorTest, SizeTest) {EXPECT_EQ(v1.size(), 1);EXPECT_EQ(v2.size(), 2);
}TEST_F(VectorTest, ContentTest) {EXPECT_EQ(v1[0], 1);EXPECT_EQ(v2[0], 2);EXPECT_EQ(v2[1], 3);
}

参数化测试

class IsPrimeTest : public testing::TestWithParam<int> {// 可以在这里定义夹具
};TEST_P(IsPrimeTest, TestsIsPrime) {int n = GetParam();EXPECT_TRUE(IsPrime(n));
}INSTANTIATE_TEST_SUITE_P(PrimeValues, IsPrimeTest,testing::Values(2, 3, 5, 7, 11, 13, 17, 19));

死亡测试

验证代码是否按预期终止:

TEST(ExitTest, DiesCorrectly) {EXPECT_DEATH({fprintf(stderr, "Fatal error detected!\n");exit(1);}, "Fatal error detected!");
}

高级特性

类型化测试

template <typename T>
class TypedTest : public testing::Test {};typedef testing::Types<int, float, double> MyTypes;
TYPED_TEST_SUITE(TypedTest, MyTypes);TYPED_TEST(TypedTest, SizeTest) {EXPECT_EQ(sizeof(TypeParam), 4);  // 对int和float成立,double不成立
}

值参数化测试

class MyTest : public testing::TestWithParam<std::tuple<int, int>> {};TEST_P(MyTest, SumTest) {auto params = GetParam();int a = std::get<0>(params);int b = std::get<1>(params);EXPECT_EQ(a + b, Add(a, b));
}INSTANTIATE_TEST_SUITE_P(Default, MyTest,testing::Combine(testing::Range(1, 5),testing::Range(5, 10)));

运行测试

编译后运行测试程序,Google Test 会输出详细的测试结果:

[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from TestAdd
[ RUN      ] TestAdd.PositiveNumbers
[       OK ] TestAdd.PositiveNumbers (0 ms)
[ RUN      ] TestAdd.NegativeNumbers
[       OK ] TestAdd.NegativeNumbers (0 ms)
[----------] 2 tests from TestAdd (0 ms total)[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 2 tests.

与 CMake 集成示例

完整 CMake 项目示例:

cmake_minimum_required(VERSION 3.14)
project(MyProject)# 引入Google Test
include(FetchContent)
FetchContent_Declare(googletestURL https://github.com/google/googletest/archive/refs/heads/main.zip
)
FetchContent_MakeAvailable(googletest)# 添加可执行文件
add_executable(my_teststest/test_main.cpptest/test_example.cppsrc/my_code.cpp
)# 链接Google Test
target_link_libraries(my_testsGTest::GTestGTest::Main
)# 添加测试
enable_testing()
add_test(NAME my_tests COMMAND my_tests)

最佳实践

  1. 测试命名应清晰表达其目的
  2. 每个测试应只验证一件事
  3. 使用夹具避免重复代码
  4. 优先使用 EXPECT_ 而非 ASSERT_,除非失败后继续测试无意义
  5. 为测试添加必要的注释
  6. 保持测试独立,不依赖执行顺序
  7. 定期运行测试,最好集成到CI/CD流程中

Google Test 提供了丰富的文档和示例,可以通过其 GitHub 仓库 获取更多信息。

http://www.dtcms.com/wzjs/56921.html

相关文章:

  • seo网站建设课程最新国际新闻头条新闻
  • 潍坊住房与城市建设部网站推广工作的流程及内容
  • 本地用织梦做网站怎么开发自己的小程序
  • 武汉网站关键词排名seo免费优化网站
  • 免费公司网站主页模板最近中国新闻热点大事件
  • 免费网站空间 - 百度网站推广的100种方法
  • 西安哪些做网站的公司好杭州产品推广服务公司
  • 织梦网站默认密码忘记手机网站排名优化软件
  • 企业建立网站需要提供什么上海seo培训中心
  • 简单小网站百度网页游戏
  • 单招网是哪个网站制作公司做的百度一下你知道主页官网
  • 2019个人建设网站百度ocpc如何优化
  • 网站app制作教程南通百度网站快速优化
  • 买服务器做网站主机超级优化
  • 前端开发 网站建设扬州网络推广公司
  • 自己在线制作logo免费生成器搜索引擎优化的技巧有哪些
  • IT男为女朋友做的求婚网站网站优化公司哪个好
  • 北京网站建设方案nba最新消息新闻
  • 长沙 网站设计 公司免费建站平台哪个好
  • 海珠区网站建设网站怎样优化关键词好
  • 漳州博大网站建设搜索排名优化软件
  • 电子商务网站建设与维护展望百度快速收录开通
  • 免费b2b网站如何做排名优化seo是什么
  • 用java做信息发布网站百度竞价推广效果好吗
  • 网站建设价格制定的方法网上培训机构
  • 网站不用了 怎么关闭吗淘宝标题优化网站
  • 哪个网站可以做片头百度怎么找人工客服
  • 网站建设教程微云网盘网站权重优化
  • 信访举报 网站 建设 情况谷歌代运营
  • 定制网站建设公司策划书百度收录查询入口