c++gtest mock
时间: 2023-08-29 09:10:32 浏览: 166
Google Mock是Google的一个开源C++单元测试框架,它是Google Test的一部分。它提供了一种方便的方式来创建和使用模拟对象,以便在单元测试中模拟和验证对象的行为。\[1\]
使用Google Mock的好处是它简化了模拟对象的创建和使用过程。只需包含"gtest/gtest.h"和"gmock/gmock.h"头文件,就可以开始使用Google Mock。此外,Google Mock还提供了强大的功能,例如模拟函数的返回值和参数,设置模拟对象的行为等等。\[1\]
下面是一个简单的C++示例,展示了如何使用Google Mock进行单元测试和模拟对象的创建:
```cpp
#include <iostream>
#include "gtest/gtest.h"
#include <mockcpp/mockcpp.hpp>
#include "frame/frame.h"
inline unsigned int mok_sleep(unsigned int seconds) {
std::cout << "running mok_sleep" << std::endl;
}
class FooEnvironment : public testing::Environment {
public:
void SetUp() override {
MOCKER(sleep).stubs().will(invoke(mok_sleep));
}
void TearDown() {
}
};
TEST(TestAdd, TestCase1) {
EXPECT_EQ(5, Frameuitl::add(2, 3));
}
TEST(TestAdd, TestCase2) {
EXPECT_EQ(5, Frameuitl::add(2, 3));
}
int main(int argc, char **argv) {
std::cout << "gtest begin.." << std::endl;
testing::AddGlobalTestEnvironment(new FooEnvironment());
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```
通过使用gcov和lcov工具,可以查看代码的覆盖率情况。\[2\]
需要注意的是,Google Test中也有Google Mock,但是Google Mock只能用于模拟对象的函数,不能用于模拟C代码中的一般函数。如果需要模拟C代码中的函数,可以使用mockcpp框架。mockcpp是一个用于C++的轻量级模拟框架,可以模拟C代码中的函数。\[3\]
希望以上信息对您有帮助。
#### 引用[.reference_title]
- *1* [C++类对象单元测试中的Mock使用](https://blog.csdn.net/qq_34799070/article/details/123434906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [基于gtest、mockcpp写C++LLT测试入门级教程](https://blog.csdn.net/qq_43003442/article/details/115706665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文