草庐IT

mocking-stubbing

全部标签

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++ - 使用对象的 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++ - 惰性构造 - 虚拟方法与 if-then stub setter/getter

我的问题的背景是我试图创建一个惰性网格结构,其中网格区域仅在需要时实例化,否则它们在查询时返回默认值。稍微归结一下这个问题,考虑一下我的情况的以下模型:structContainer{std::vectordata;floatget(intindexOuter,intindexInner){returndata[indexOuter].get(indexInner);}}我想stubBase::get在某些情况下函数总是返回相同的值,而在其他情况下我想返回某个数组中的值。我想象两种可能的解决方案。第一个解决方案是在Base上使用标志,即structBase{std::vectordat

C++ 单元测试和 stub 第 3 方 C 库

我需要对我编写的一些使用第3方C库的C++对象进行单元测试。由于超出该问题范围的原因,我无法直接调用第3方C库,需要将其stub以用于测试套件。对于单元测试套件的其他部分,我们使用googlemock,但我认为它不能用于C库。我可以手动stub库,但不想这样做(部分原因是懒惰(它相当大),但主要是因为它只是一个原则问题)。所以这是我的问题:是否有一种工具可以根据C库头文件生成stub代码?一旦我有了被删除的代码,我将对其进行一些小的修改,然后我将针对它进行链接以进行单元测试。 最佳答案 stubgen可以从头文件生成stub成员,除

c++ - 如何在 C++ 中 stub /模拟非指针成员变量?

很多单元测试的网站都说要提取一个接口(interface)和接口(interface)的代码(这是有道理的),但这需要通过指针使用多态性。是否可以在没有指针的情况下完成此操作,这样我就不必修改生产代码?我宁愿不使用指针和管理内存。允许条件编译。我专门为我的stub/模拟使用gmock。我研究过的一些事情是:使用引用涉及编写特殊的复制构造函数或使其不可复制仍然需要使用new/delete来管理内存不确定这是否会导致不可预见的问题通过代码生成创建指针包装类的集合。界面保持不变,但增加了一些测试方法。看起来可以,但需要维护下面是我的意思的例子请注意gmock模拟对象不可复制,因此我不能构造函

@mock课中的模拟字段

由于我是Mockito的新手@Mock.例子:@RunWith(MockitoJUnitRunner.class)publicclasssomeServiceTest{@InjectMocksprivateMainServicemainService;@MockprivateHelpServicehelpService;@MockprivateSecondHelpServicesecondHelpService;现在有这个helpService类,其中包含一种用于测试的方法MainService.@Service@Transactional(propagation=Propagation.SU

c++ - 谷歌模拟 : Is it ok to use global mock objects?

在所有关于gmock的文档中,我总是发现要在测试中实例化模拟对象,就像这样:TEST(Bim,Bam){MyMockClassmyMockObj;EXPECT_CALL(MyMockObj,foo(_));...}因此,对象在每次测试时都会被创建和销毁。我相信为每个测试夹具创建和销毁对象也完全没问题。但我想知道是否也可以拥有模拟对象的文件全局实例,就像这样:MyMockClassmyMockObj;TEST(Bim,Bam){EXPECT_CALL(MyMockObj,foo(_))...}我试过了,到目前为止我完全没有问题,一切似乎都很好。但也许我应该知道什么?只是因为我偶然发现了t

c++ - NiceMock 一个将另一个 Mock 作为构造函数参数的 Mock

我想将Mock与NiceMock结合使用。Mock有一个构造函数,该构造函数将另一个Mock作为参数。这是我拥有的有效代码的一个小示例classClassA{ClassA(){}};templateclassClassB>{ClassB(ClassA&a){}//constructor,nodefaultconstructorforthisclass};classClassC{ClassC(){}};classMyTest:publicTest{MockClassAa;MockClassB*b=NULL;SetUp(){b=newMockClassB(a);}...};这很好用,但是如

c++ - CUnit - 'Mocking' libc 函数

我正在使用CUnit进行项目单元测试。我需要测试我是否使用正确的参数调用libc函数以及我是否以正确的方式处理它们的返回值。例如:如果我调用bind(...)函数-我想检查我传递了哪个af参数并断言如果这是错误的,我还想模拟它的返回值并断言如果我检查它正确的方法。出于这些目的,我希望CUnit环境有一个内置机制,让我在测试时调用“模拟”bind()函数,在运行代码时调用真正的bind()函数——但我不能找到这样的东西。如果我遗漏了CUnit中的某些内容,您能否告诉我,或者建议一种实现方法。谢谢,乔。 最佳答案 不幸的是,您不能使用C