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

网站建站视频教程百度seo自动优化

网站建站视频教程,百度seo自动优化,做网站空间要多大,专业手机网站建设企业本文主要用于介绍一个完整的 GTest GMock 使用示例,涵盖了接口定义、Mock 类实现、被测试类、以及单元测试代码,展示了如何使用 GMock 模拟依赖并进行行为验证。 项目结构 gtest_gmock_demo/ ├── CMakeLists.txt ├── include/ │ └── datab…

本文主要用于介绍一个完整的 GTest + GMock 使用示例,涵盖了接口定义、Mock 类实现、被测试类、以及单元测试代码,展示了如何使用 GMock 模拟依赖并进行行为验证。


项目结构

gtest_gmock_demo/
├── CMakeLists.txt
├── include/
│   └── database.h
|     └── user_service.h
├── src/
│   └── user_service.cpp
├── test/
│   ├── user_service_test.cpp
│   └── mock_database.h

1. 接口定义:include/database.h

#pragma once
#include <string>class IDatabase {
public:virtual ~IDatabase() = default;virtual bool connect(const std::string& db_uri) = 0;virtual bool save_user(const std::string& username, int age) = 0;
};

2. 业务实现:src/user_service.cpp

// include/user_service.h
#pragma once#include "database.h"class UserService {
public:UserService(IDatabase *db);bool register_user(const std::string& username, int age);private:IDatabase *db_;
};
// src/user_service.cpp
#include "user_service.h"UserService::UserService(IDatabase *db) : db_(db) {}bool UserService::register_user(const std::string& username, int age) {if (db_ == nullptr || username.empty() || age <= 0) {return false;}return db_->save_user(username, age);
}

3. GMock 模拟类:test/mock_database.h

#pragma once
#include "database.h"
#include <gmock/gmock.h>class MockDatabase : public IDatabase {
public:MOCK_METHOD(bool, connect, (const std::string& db_uri), (override));MOCK_METHOD(bool, save_user, (const std::string& username, int age), (override));
};

4. 单元测试:test/user_service_test.cpp

#include "mock_database.h"
#include "user_service.h" 
#include <gtest/gtest.h>TEST(UserServiceTest, RegisterUserSuccess) {MockDatabase mock_db;UserService service(&mock_db);// 设定期望:save_user 被调用一次,参数为 "alice", 30,返回 trueEXPECT_CALL(mock_db, save_user("alice", 30)).Times(1).WillOnce(::testing::Return(true));EXPECT_TRUE(service.register_user("alice", 30));
}TEST(UserServiceTest, RegisterUserFail_EmptyName) {MockDatabase mock_db;UserService service(&mock_db);// 不应调用 save_userEXPECT_CALL(mock_db, save_user(::testing::_, ::testing::_)).Times(0);EXPECT_FALSE(service.register_user("", 25));
}TEST(UserServiceTest, RegisterUserFail_NegativeAge) {MockDatabase mock_db;UserService service(&mock_db);EXPECT_CALL(mock_db, save_user(::testing::_, ::testing::_)).Times(0);EXPECT_FALSE(service.register_user("bob", -10));
}

CMake 配置:CMakeLists.txt

cmake_minimum_required(VERSION 3.14)project(GTestGMockDemo)set(CMAKE_CXX_STANDARD 17)enable_testing()include_directories(include)include(FetchContent)
FetchContent_Declare(googletestURL https://github.com/google/googletest/archive/refs/heads/main.zip
)FetchContent_MakeAvailable(googletest)add_executable(unit_testssrc/user_service.cpptest/user_service_test.cpp
)target_link_libraries(unit_testsGTest::gtestGTest::gmockGTest::gtest_mainpthread
)add_test(NAME AllTests COMMAND unit_tests)

编译和运行测试


mkdir build && cd build
cmake ..
make
./unit_tests

相关知识点

模块说明
IDatabase依赖接口,用于隔离测试
MockDatabaseGMock 自动生成桩代码
UserService被测试的业务逻辑
EXPECT_CALL验证函数是否按预期调用
http://www.dtcms.com/wzjs/484538.html

相关文章:

  • 打开网站说建设中是什么问题?郑州网站推广哪家专业
  • 网站建设需求发布竞价系统
  • 做行业网站投资多少百度小说排行榜
  • 怎样免费制作网站怎么去推广自己的平台
  • 网站备案在哪里审批营销网络是啥意思
  • 山东建设局网站电工公司策划推广
  • wordpress主要用途站长网站优化公司
  • vue.js做的网站seo发帖论坛
  • 互联网行业的工作岗位宁波seo费用
  • 西城上海网站建设网站开发工程师
  • 小程序定制开发流程深圳品牌seo
  • 社会组织网站建设seo关键词排名系统
  • 云服务器建站销售找客户的app
  • 做算命网站挣钱吗免费b2b网站大全免费
  • 杭州专业做网站的公司有哪些百度怎样发布作品
  • 天津建设合同怎么在网站录入2345浏览器
  • 大学生做政府网站百度的广告推广需要多少费用
  • 两个网站用一个空间seo自然优化排名
  • 网站怎么进行优化排名福州seo网站管理
  • WordPress发不出注册邮箱优化网站搜索排名
  • 哈尔滨最新出入规定网络营销郑州优化推广公司
  • 云南省建设厅勘察设计处网站网站seo的内容是什么
  • CSS做网站下拉菜单被图片挡住了杭州网站优化企业
  • 共享wifi小程序搭建网站排名优化方案
  • 把网站传到服务器上怎么做南昌seo
  • 深圳做男装什么网站容易找工北京排名seo
  • 盐城网站开发代理咨询百度营销登录平台
  • 网站制作高端网站建设360安全浏览器
  • 登陆网站user.bhgj.cn怎样制作免费网页
  • 郑州知名网站推广长春网站建设技术支持