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

企业网站备案怎么做起名最好的网站排名

企业网站备案怎么做,起名最好的网站排名,底湘西网站制作,wordpress 模板挂马文章目录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/195030.html

相关文章:

  • 企业网站制作怎么做网站优化公司哪家好
  • 海南城乡建设厅网站seo培训课程
  • 山河集团建设有限公司网站网络营销流程
  • 抖音里做我女朋友网站网站推广应该坚持什么策略
  • 制作企业网站的新闻投百度做广告效果怎么样
  • 婚恋网网站架构运营和营销是一回事吗
  • 摄影网站建设方案天机seo
  • 网站建设与维护百度百科全国免费发布信息平台
  • wordpress tag 转拼音广州关于进一步优化疫情防控措施
  • 上上上海网站设计推广资源网
  • wordpress 权限河南企业站seo
  • 官方网站搭建seo自媒体培训
  • 手机网站制作公司选哪家网站建站网站
  • 参与网站建设的人员宣传推广方式
  • 徐州网络建站模板武汉seo软件
  • 门户网站如何做推广什么是整合营销并举例说明
  • 单页面网站如何seo域名免费查询
  • 橙子建站是哪家公司网站流量统计工具
  • 济宁网站建设seo线上运营的5个步骤
  • 大良网站建设站长之家工具高清
  • 嘉兴 做网站 推广宁波网站推广公司有哪些
  • 松岗做网站价格上海网站seo诊断
  • 青岛移动网站开发营销推广策略
  • 达州市住房和城乡建设局网站舆情网站直接打开的软件
  • 建筑网挂兼职南宁seo教程
  • 网站做seo需要些什么免费网站在线观看人数在哪
  • 做查询网站有哪些网站发布与推广
  • 网站首页被降权张家界网站seo
  • 企业网站 响应式 案例google国际版入口
  • 如何建设网站咨询跳转页面网络代理app