googlemock相关内容
当无法通过被调用函数的不同输入参数识别调用时,我如何从模拟工厂返回多个对象?unique_ptr 我正在做此操作: EXPECT_CALL(MyFactoryMock, create()) .WillRepeatedly(Return(ByMove(std::make_unique()))); 运行时错误为: [致命] /.../tools
..
如何从返回STD::UNIQUE_PTR的模拟工厂函数返回多个模拟对象? Return(ByMove(...))不能用于多次返回。 正在尝试根据以下答案进行工作: https://stackoverflow.com/a/70751684/3545094 我想出了这个: class MyType { public: virtual ~MyType() {} }; clas
..
给定以下模拟方法 MOCK_METHOD2(send, int(const void* pBuffer, size_t szBuffer)); 和以下用法 EXPECT_CALL(socketMock, send(_, _)) .Times(1) .WillOnce(ReturnArg()); 由于szBuffer隐式转换为int的返回类型,将在Retur
..
我发现Google测试有一个意想不到的行为,当涉及到死亡测试和对模拟对象的期望时。 检查以下示例: #include #include class Interface { public: virtual void foo() = 0; }; class InterfaceMock : public Interface {
..
我正尝试在单元测试中使用GMock。但链接失败,并出现下一个错误: In function `testing::internal::linked_ptr_internal::depart()': /home/user/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:127: undefined reference
..
我将 Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn 包安装到我的 VS 2017 应用程序解决方案中.这是通过“添加新项目/其他语言/C++/Test/Google 测试"向我的解决方案添加一个新的 GoogleTest 项目来实现的. 测试运行良好,但现在我准备尝试使用 gmock 进行一些模拟.所以,我通过 NuGe
..
我用模拟类编写了一个小测试.当我运行它时,首先我得到一个警告,即调用了一个无趣的模拟函数,然后测试失败,因为没有满足期望,即模拟函数至少被调用一次.有趣的是,当我看到上面的警告消息时,调用了该函数. 你对这件事有什么想法吗? 谢谢! 编辑:这是我的代码结构: class Bla {上市:布拉();虚拟〜Bla();虚拟浮动 myFunction();}MockBla 类:公共
..
假设您正在测试类 A,它有一个 依赖注入B 的 a> 具有 C 的依赖注入. 所以你模拟 B 但它拥有的唯一构造函数需要注入C,所以你是否也必须模拟 C 并将模拟的 C 注入模拟的 B 并且只然后将其注入到 A? 如果你有 5 个连续的依赖项怎么办? 有什么选择? 我使用 Google Mock,所以具体的答案也会有所帮助. 解决方案 在这种情况下你应该通过指针而不是通过引
..
使用 google 模拟对象编写 (google) 测试用例并期望从测试中的类控制的另一个线程调用 EXPECT_CALL() 定义的最佳方法是什么?在触发调用序列后简单地调用 sleep() 或类似方法并不合适,因为它可能会减慢不必要的测试并且可能不会真正达到计时条件.但是以某种方式完成测试用例必须等到模拟方法被调用.有什么想法吗? 这里有一些代码来说明这种情况: Bar.hpp(被
..
我是一名相当新的软件开发人员,目前正在为多年前开始的现有 C++ 项目添加单元测试.由于非技术原因,我不允许修改任何现有代码.我所有模块的基类都有一堆设置/获取数据和与其他模块通信的方法. 由于我只想对每个单独的模块进行单元测试,因此我希望能够为我的所有模块间通信方法使用固定值.IE.对于检查另一个模块是否处于活动状态的 Ping() 方法,我希望它根据我正在做的测试类型返回 true 或
..
如果我在同一个 TEST_F 中的同一个模拟对象上两次调用 EXPECT_CALL ...会发生什么? 是否将期望附加到模拟对象上,还是第二次调用消除了第一次调用的影响? 我发现了之后子句似乎暗示允许多次调用同一个模拟+ EXPECT_CALL. 解决方案 是的,您可以在同一个模拟对象上多次调用 EXPECT_CALL.只要您确保在实际使用模拟方法之前调用了所有 EXPECT_
..
我有一个返回智能指针的工厂.无论我使用什么智能指针,我都无法让 Google Mock 模拟工厂方法. 模拟对象是一个纯抽象接口的实现,其中所有方法都是虚拟的.我有一个原型: MOCK_METHOD0(Create, std::unique_ptr()); 我得到: "...gmock/gmock-spec-builders.h(1314): error C2248: 'std::un
..
我遇到了一个问题,似乎找不到解决方案. 我使用 VS2005 SP1 编译代码. 我有一个全局函数: A* foo(); 我有一个模拟课 class MockA : public A {民众:MOCK_METHOD0 (bar, bool());...}; 在源代码中,它是这样访问的:foo()->bar().我找不到嘲笑这种行为的方法.而且我不能改变来源,所以谷歌模拟烹饪书中
..
我需要对我编写的一些使用 3rd 方 C 库的 C++ 对象进行单元测试.由于超出本问题范围的原因,我无法直接调用 3rd 方 C 库,需要将其存根以用于测试套件. 对于我们单元测试套件的其他部分,我们使用 googlemock,但我认为它不能用于 C 库.我可以手动删除库,但不喜欢(部分原因是懒惰(它相当大),但主要是因为它只是一个原则问题). 所以这是我的问题:是否有一种工具可以根
..
我想从我无法更改的类中模拟(使用 gmock)一个静态函数.A 是我要模拟的类: A 类{民众:静态 std::string get_id();...} B 是我想用 gmock 测试的类: B 类{民众:B(A *a_ptr);...std::string foo();私人的:一个 *m_a_ptr;}B::B(A *a_ptr) : m_a_ptr(a_ptr){}std::string
..
我有一个模拟方法.当它被调用时,我希望它在调用其正常行为之前调用另一个函数.类似的东西: EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_)).WillOnce(DoAll(调用(my_obj,&SomeAdditionalMethodIWantToCall),调用(my_obj, &DefaultBehavior),)); 唯一的问题是 SomeAd
..
我正在尝试模拟系统有趣的ioctl和套接字,但它总是调用系统功能的原始定义.这是我使用gmock编写的gtest代码. 请仔细阅读代码,帮助我找出问题所在.有没有一种方法可以在单元测试中使用gmock模拟系统功能.如果有的话,请提供给我一个模拟系统功能的示例代码. 在test.hpp文件中 SystemFun类{上市:虚拟〜SystemFun(){}virtual int ioct
..
我正在使用C ++中的GMock/Gtest编写单元测试.我无法在命名空间中模拟方法.例如:被调用函数中的 namespace :: method_name(). 示例代码: TestClass.cc.//单元测试类TEST(testFixture,testMethod){MockClass模拟;EXPECT_CALL(模拟,func1(_));模拟.helloWorld();}
..
我尝试模拟User类及其嵌套结构UserBuilder: class用户{上市:虚拟int loadData(const std :: string& filename);虚拟UserBuilder getUserBuilder(const std :: string& functionName)const;struct UserBuilder{UserBuilder(std :: strin
..
我想添加GMOCK测试以验证容器是否访问正确的方法.对于 vector ,它应该访问第二种方法,对于 set ,它应该访问第一种方法(因为 set 具有 set.find ).这是我的模板专长: 命名空间工具{struct low_priority {};struct high_priority:low_priority {};template自动exist_in(h
..