草庐IT

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++ - CMake 与 gmock

我只是想确保我对CMakeLists.txt的理解是正确的。我的虚拟项目结构:|-+dummy|-+CMakeLists.txt|-+src|--CMakeLists.txt|--Converter.cpp|--Converter.hpp|--main.cpp|-+tests|--CMakeLists.txt|--Converter_ut.cpp|-+thirdparty|-+gmock-1.7.0我的目标是使用CMake创建构建过程。这是我的第一次尝试,所以我认为有一些错误。它有效,但我不确定我是否理解正确,如果你能分享一些意见/建议,我将不胜感激。虚拟/CMakeLists.txt

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++ 中使用 GMock 模拟方法(非虚拟)以返回特定值?

我的问题是我想模拟一个StaticNon-Virtual方法来返回true,最终返回false。我有静态方法例如:classSomeClass{public:staticboolSomeClass::DoAction(){//dosomeActions};};我想在模拟期间始终返回true,但默认情况下返回false,反正有模拟我尝试了以下方法来检查oncall值并发现它导致false。classMockSomeClass:publicSomeClass{public:MockSomeClass(){ON_CALL(this,DoAction).WillByDefault(testin

c++ - 将测试从 GoogleTest 升级到 GoogleMock (Ubuntu 14) 时出现与 pthread 相关的错误

尝试添加gmock时到已经在使用gtest的现有项目,我发现了一系列与pthread有关的低级错误.我的猜测是这与GoogleMock和GoogleTest的构建方式有关(请参阅下面的详细信息),但不幸的是,关于在Ubuntu14中使用这些库的最佳方式的信息不多。将代码缩减为最小的代表性示例后,会发生什么:我将GoogleTestheader替换为GoogleMockheader以及“主要”函数://Declarationsatfoo.hclassFoo{public:intsum(inta,intb);//itreturnsa+b(definedinfoo.cpp)};//Testc

c++ - 在 gmock 的 EXPECT_CALL 中调用 sleep()

我试图在调用FuncHelper之前在.WillOnce中做一些sleep。所以我需要类似于以下内容的内容:EXPECT_CALL(*_mock,Func(_,_,_)).Times(1).WillOnce(DoAll(InvokeWithoutArgs(sleep(TimeToSleep)),Invoke(_mock,&M_MyMock::FuncHelper)));是否可以在.DoAll中使用arg调用sleep()?C++98是首选。更新:该解决方案基于@Smeeheey的回答并使用C++98。templatevoidSleep(){sleep(N);}...EXPECT_CAL

c++ - 如何模拟 malloc 以在 GMOCK 中返回 null?

我想使用Gmock框架在C++中模拟malloc。可能吗?我已经尝试了所有可能的方法。但是承载这个malloc实现的类有一个私有(private)的构造函数和析构函数?有什么方法可以直接mockmalloc返回NULL吗? 最佳答案 开发者之爱,首先,对标准库的模拟从来都不是一个好习惯,在这种粒度级别上测试代码是为了艺术而艺术。你必须注意到,从一开始,测试就成为项目的一部分,如果你想让它们保持最新(又名维护工作回归),你必须以与生产代码相同的方式考虑它们的设计。事实上,测试也是在项目生命周期中必须维护的代码,如果阅读、纠正和最终理解

c++ - 当我#include "gmock/gmock.h"时编译错误

我正在尝试将googlemock集成到我的测试中。我已经在googletest上成功构建并运行了测试,现在我也在尝试逐步将gmock功能添加到测试中,但是我遇到了一个我完全不明白的编译错误。我没有尝试使用或定义模拟类,也没有使用gmock.h提供的任何内容。在我的(以前工作的)tests.cpp文件的顶部,我只输入#include"gmock/gmock.h"我得到了编译错误:gmock/gmock-matchers.h(2497):errorC2059:syntaxerror:'sizeof'gmock/gmock-matchers.h(2505):seereferencetocla