googlemock相关内容

从工厂模拟返回多个UNIQUE_PTR

当无法通过被调用函数的不同输入参数识别调用时,我如何从模拟工厂返回多个对象?unique_ptr 我正在做此操作: EXPECT_CALL(MyFactoryMock, create()) .WillRepeatedly(Return(ByMove(std::make_unique()))); 运行时错误为: [致命] /.../tools ..
发布时间:2022-08-26 23:34:12 C/C++开发

CMake:无法与GMock链接

我正尝试在单元测试中使用GMock。但链接失败,并出现下一个错误: In function `testing::internal::linked_ptr_internal::depart()': /home/user/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:127: undefined reference ..
发布时间:2022-08-26 21:57:49 C/C++开发

已安装 GoogleTest 后如何在 Visual Studio 2017 中配置 GoogleMock?

我将 Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 包安装到我的 VS 2017 应用程序解决方案中.这是通过“添加新项目/其他语言/C++/Test/Google 测试"向我的解决方案添加一个新的 GoogleTest 项目来实现的. 测试运行良好,但现在我准备尝试使用 gmock 进行一些模拟.所以,我通过 NuGe ..
发布时间:2022-01-12 08:31:28 其他开发

无趣的模拟函数调用 bla() &&预期:至少被调用一次 bla()?

我用模拟类编写了一个小测试.当我运行它时,首先我得到一个警告,即调用了一个无趣的模拟函数,然后测试失败,因为没有满足期望,即模拟函数至少被调用一次.有趣的是,当我看到上面的警告消息时,调用了该函数. 你对这件事有什么想法吗? 谢谢! 编辑:这是我的代码结构: class Bla {上市:布拉();虚拟〜Bla();虚拟浮动 myFunction();}MockBla 类:公共 ..
发布时间:2022-01-08 22:08:53 C/C++开发

使用依赖注入模拟 C++ 类

假设您正在测试类 A,它有一个 依赖注入B 的 a> 具有 C 的依赖注入. 所以你模拟 B 但它拥有的唯一构造函数需要注入C,所以你是否也必须模拟 C 并将模拟的 C 注入模拟的 B 并且只然后将其注入到 A? 如果你有 5 个连续的依赖项怎么办? 有什么选择? 我使用 Google Mock,所以具体的答案也会有所帮助. 解决方案 在这种情况下你应该通过指针而不是通过引 ..
发布时间:2022-01-08 22:07:55 其他开发

期待来自另一个线程的 googlemock 调用

使用 google 模拟对象编写 (google) 测试用例并期望从测试中的类控制的另一个线程调用 EXPECT_CALL() 定义的最佳方法是什么?在触发调用序列后简单地调用 sleep() 或类似方法并不合适,因为它可能会减慢不必要的测试并且可能不会真正达到计时条件.但是以某种方式完成测试用例必须等到模拟方法被调用.有什么想法吗? 这里有一些代码来说明这种情况: Bar.hpp(被 ..
发布时间:2022-01-08 22:06:58 C/C++开发

在不编辑生产代码的情况下在 C++ 中模拟非虚拟方法?

我是一名相当新的软件开发人员,目前正在为多年前开始的现有 C++ 项目添加单元测试.由于非技术原因,我不允许修改任何现有代码.我所有模块的基类都有一堆设置/获取数据和与其他模块通信的方法. 由于我只想对每个单独的模块进行单元测试,因此我希望能够为我的所有模块间通信方法使用固定值.IE.对于检查另一个模块是否处于活动状态的 Ping() 方法,我希望它根据我正在做的测试类型返回 true 或 ..
发布时间:2022-01-08 22:04:55 C/C++开发

谷歌模拟 - 我可以在同一个模拟对象上多次调用 EXPECT_CALL 吗?

如果我在同一个 TEST_F 中的同一个模拟对象上两次调用 EXPECT_CALL ...会发生什么? 是否将期望附加到模拟对象上,还是第二次调用消除了第一次调用的影响? 我发现了之后子句似乎暗示允许多次调用同一个模拟+ EXPECT_CALL. 解决方案 是的,您可以在同一个模拟对象上多次调用 EXPECT_CALL.只要您确保在实际使用模拟方法之前调用了所有 EXPECT_ ..
发布时间:2021-12-09 19:33:09 C/C++开发

模拟免费功能

我遇到了一个问题,似乎找不到解决方案. 我使用 VS2005 SP1 编译代码. 我有一个全局函数: A* foo(); 我有一个模拟课 class MockA : public A {民众:MOCK_METHOD0 (bar, bool());...}; 在源代码中,它是这样访问的:foo()->bar().我找不到嘲笑这种行为的方法.而且我不能改变来源,所以谷歌模拟烹饪书中 ..
发布时间:2021-12-09 18:50:28 C/C++开发

C++ 单元测试和存根第 3 方 C 库

我需要对我编写的一些使用 3rd 方 C 库的 C++ 对象进行单元测试.由于超出本问题范围的原因,我无法直接调用 3rd 方 C 库,需要将其存根以用于测试套件. 对于我们单元测试套件的其他部分,我们使用 googlemock,但我认为它不能用于 C 库.我可以手动删除库,但不喜欢(部分原因是懒惰(它相当大),但主要是因为它只是一个原则问题). 所以这是我的问题:是否有一种工具可以根 ..
发布时间:2021-09-14 18:57:19 C/C++开发

使用Googletest,我无法模拟系统功能

我正在尝试模拟系统有趣的ioctl和套接字,但它总是调用系统功能的原始定义.这是我使用gmock编写的gtest代码. 请仔细阅读代码,帮助我找出问题所在.有没有一种方法可以在单元测试中使用gmock模拟系统功能.如果有的话,请提供给我一个模拟系统功能的示例代码. 在test.hpp文件中 SystemFun类{上市:虚拟〜SystemFun(){}virtual int ioct ..
发布时间:2021-05-13 18:35:12 其他开发

如何模拟返回对象

我尝试模拟User类及其嵌套结构UserBuilder: class用户{上市:虚拟int loadData(const std :: string& filename);虚拟UserBuilder getUserBuilder(const std :: string& functionName)const;struct UserBuilder{UserBuilder(std :: strin ..
发布时间:2021-05-13 18:35:06 C/C++开发