草庐IT

googlemock

全部标签

c++ - QTestLib单元测试框架+Gmock(创建QTCPServer-Mock对象)

我正在使用Qt的QTestLib单元测试框架+GMOck。我正在尝试使用gMock设置模拟服务器,以便在单元测试中简单地从QTcpSocket接收数据到VerifySendData()方法。如果有人给我一个例子,我可以如何创建模拟对象gMOCK(EXPECTCALL,创建模拟对象)#ifndefTST_TCPCOMMTEST_H#defineTST_TCPCOMMTEST_H#include#include#include#includeclassTcpCommTest:publicQObject{Q_OBJECTprivate:QTcpSocket*pTestSocket;QTcpS

c++ - gmock 和转发声明的类

假设我有这个类并且在Base.h中向前声明了类型管理器。#includeclassMockBase:publicBase{public:MOCK_CONST_METHOD0(manager,constManager&());...};我不会在我的测试中使用这个方法,所以我不想将Manager类的定义包含到带有测试的文件中。但我认为在编译gmock时会尝试准备错误消息并且在其内部深处它需要Manager变量的地址并且我有一个错误:errorC2027:useofundefinedtype'Manager'\external\googlemock\gtest\include\gtest\g

c++ - 使用对象的 Google Mock 和 SetArgPointee

我最近在使用GMock,但无法在以下代码中成功使用SetArgPointee。classrox{public:inta,b;rox(){}rox(constrox&ana){a=ana.a;b=ana.b;}roxoperator=(constrox&ana){a=ana.a;b=ana.b;return*this;}};TEST(Statistics,RandomReceived){MockClassms;roxana1,ana2;EXPECT_CALL(ms,Read(_)).Times(1).WillOnce(DoAll(SetArgPointee(ana1),Return(1)

c++ - Google Mock中如何访问私有(private)成员

我正在尝试为一个带有私有(private)vector的类编写模拟,它将数据插入到私有(private)vector中。但是,我没有看到使用GoogleMock来做到这一点的方法。理想情况下,我不希望在我的界面中有任何与测试相关的内容。此外,我不想让私有(private)vectorprotected并子类化该类并添加访问器方法,因为这会导致我的代码泄漏其实现。这是我目前所拥有的。我想要完成的是用Fake类插入数据,并使用Mock类在指向Fake类的指针上调用Real::first()(这样我就可以使用Fake的vector而不是Real的vector)。编译此程序时,返回-1而不是4

c++ - 如何谷歌模拟从结构调用的方法

让我们举个例子:ClassA{public:intGet();}在另一个文件中:Aa;structB{intres=a.Get();}我需要GoogleMockGet方法,但是,我还需要调用真实的方法。我试过#ifdef,它似乎有效。然后我决定在#ifdef部分模拟它,但它什么也没做。#ifdefUNIT_TESTMOCK_METHOD0(A,Get);#elseintA::Get(){....}#endif我做错了什么?有没有更清洁的方法来做到这一点?请提供任何帮助,我们将不胜感激。 最佳答案 你做错了。这是应该如何完成的:1)头

c++ - 引用谷歌测试/模拟框架中的数组参数

我有一个引用数组输出参数的成员函数,我想在googlemock中使用它,但它不起作用。类(class):classClass{//returns:numberoftherewrittenelementsinthearrayintfoo(Struct(&bar)[ArraySize])const;};模拟类:classMockClass:publicClass{MOCK_CONST_METHOD1(foo,int(Struct(&)[ArraySize]));};当我想使用它时,我写了以下内容:ON_CALL(mMockClass,foo(_)).WillByDefault(DoAll(

c++ - 如何使用 gmock 从类中模拟模板方法?

如何使用gmock模拟一个类的模板方法(不是模板类)?像这样的类示例,我想模拟这个类和这个模板方法..classA{public:templateintgetType(intval);};我知道如何用非虚拟方法模拟一个类,或者模拟一个模板类,但我不知道如何用一个模板方法模拟一个非模板类.. 最佳答案 第一个更好的解决方案是使用此函数A::getType的实现-也许它不必被模拟?例如:如果它只是返回一些在构造函数中设置的值-那么只需按照测试用例所需的方式构造A:classA{public:A(inta):a(a){}templatei

c++ - 为什么不为 GMock 1.8.0 编译带有可变参数的模拟函数

考虑这个片段MOCK_METHOD1(foo,int(volatileint*));这段代码在GMock1.7.0上编译得很好,但是当我更新到GMock1.8.0时它抛出了一个错误../gmock/fused-src/gtest/include/gtest/gtest-printers.h:467:6:error:reinterpret_castfromtype'volatileint*'totype'constvoid*'castsawayqualifiers*os(p);^很明显,它没有编译,因为根据定义,reinterpret_cast无法删除cv限定符。我还需要说明一下,我使用

c++ - 使用 C++11 std::condition_variable 的 Gtest 意味着 valgrind 错误

如果我以这种方式使用google测试框架编写测试:TEST_F(TestFName,TestName){std::condition_variablecv;}它会生成一个valgrind错误。我使用--leak-check=full--track-origins=yes选项运行它。Conditionaljumpormovedependsonuninitialisedvalue(s)==17215==at0x4E3DA82:pthread_cond_destroy@@GLIBC_2.3.2(pthread_cond_destroy.c:35)...Uninitialisedvaluewa

c++ - 如何在谷歌模拟测试中为模拟方法的 void * 参数设置一个值?

我想将字符串“设备名称”传递给方法的void*指针参数,稍后将其检索到字符数组。为此我做了如下所示。我在这里创建了一个Action来实现这一点。ACTION_P(SetArg2ToChar,value){*static_cast(arg2)=*value;}要调用/模拟的实际方法boolgetDictItem(WORDwIndex,BYTEbSubIndex,void*pObjData,DWORDdwLength,CSdo&sdo)我的模拟方法MOCK_METHOD5(getDictItem,bool(WORDwIndex,BYTEbSubIndex,void*pObjData,DWO