草庐IT

c# - 使用 SWIG 从 C++ 生成 C# 接口(interface)

如何使用SWIG通过SWIG从C++生成C#接口(interface)(或至少是C#可模拟基类)?给定:C++:classIWidget{public:virtualvoidFlob()=0;};classWidget:publicIWidget{public:voidFlob(){};};我想输出C#:publicinterfaceIWidget{voidFlob();}publicclassWidget:IWidget{...}注意:解决方案不一定是接口(interface),但我确实需要能够使用模拟框架(例如Moq或Rhino.Mocks)来模拟C#Widget类的基类。我的尝试

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

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

c++ - 哪些模拟框架与 cppunit 一起使用?

我正在为大型C++项目实现单元测试基础设施,由于政治原因,我几乎可以肯定CppUnit将作为单元测试框架推送。我正在尝试识别与CppUnit融合的模拟框架.我找到了mockpp,而且我听说过GoogleMock应该可以。哪些框架与CppUnit协同工作? 最佳答案 模拟库通常独立于单元测试框架。他们完成两份不同的工作,坦率地说,没有太多理由互相交谈。他们整合的地方在于回答这些问题:我应该什么时候创建模拟对象?我什么时候应该根据我的期望初始化模拟对象?我应该何时验证模拟是否按预期调用?然后您在测试中的适当时间点执行此操作。例如,检查o

c++ - 我是否应该让一个成员函数成为虚拟的只是为了让一个类可测试?

我正在研究一个简化版本如下所示的类:classHttp_server{public:voidstart(intport){start_server();std::stringcontent_type=extract_content_type(get_request());}private:voidstart_server(){...}std::stringget_request(){...}std::stringextract_content_type(conststd::string&request)const{...}};现在我想为extract_content_type编写一个测

c++ - C++ 中的模拟实现

我需要一个类的模拟实现-用于测试目的-我想知道我应该如何最好地做到这一点。我可以想到两种通用方法:创建一个接口(interface),该接口(interface)包含该类的所有公共(public)函数作为纯虚函数,然后通过派生它来创建模拟类。将所有函数(好吧,至少是所有要模拟的函数)标记为虚拟。我习惯用Java中的第一种方式来做,这也很常见(可能是因为它们有专用的接口(interface)类型)。但我几乎从未在C++中看到过这种接口(interface)繁重的设计,因此我想知道。第二种方法可能会奏效,但我不禁觉得它有点丑陋。有人这样做吗?如果我按照第一种方式,我需要一些命名帮助。我有一

c++ - 模拟类可以从 googlemock 中的另一个模拟类继承吗?

模拟类可以从googlemock中的另一个模拟类继承吗?如果是,请帮助我理解为什么这不起作用。classIA{public:virtualinttest1(inta)=0;};classIB:publicIA{public:virtualfloattest2(floatb)=0;};classMockA:publicIA{public:MOCK_METHOD1(test1,int(inta));};classMockB:publicMockA,publicIB{public:MOCK_METHOD1(test2,float(floatb));};我得到一个cannotinstantia

C++ googlemocks : Getting a stack trace of an uninitialized call

模拟类看起来像这样:构造模拟类{MOCK_METHOD0(foo,void());};如果我忘记在模拟对象上设置预期的调用,我会得到这样的结果:GMOCKWARNING:Uninterestingmockfunctioncall-returningdirectly.Functioncall:foo()Stacktrace:并且堆栈跟踪为空。那么,为了获取堆栈跟踪必须做什么? 最佳答案 这描述了here:YoucancontrolhowmuchGoogleMocktellsyouusingthe--gmock_verbose=LEVE

c++ - 如何在没有模拟框架的情况下对具有讨厌依赖关系的类进行单元测试?

我在遗留C++代码库中工作,我想在一个类DependsOnUgly上测试一些方法,它具有在大类上不容易破坏的依赖性(Ugly)对文件系统等有很多外部依赖性。我想至少获得一些DependsOnUgly被测试的方法,同时尽可能少地修改现有代码。如果不进行大量代码修改,就无法通过工厂方法、方法参数或构造函数参数来创建接缝;Ugly是一个没有任何抽象基类的直接依赖的具体类,并且有大量方法,很少或没有标记为virtual,完全模拟这将是非常乏味的。我没有可用的模拟框架,但我想对DependsOnUgly进行测试,以便进行更改。我怎样才能打破Ugly的外部依赖关系来对DependsOnUgly上的

c++ - 谷歌模拟 : "no appropriate default constructor available"?

将VisualStudio2010C++与googlemock结合使用。我正在尝试使用我创建的模拟,但在线上遇到编译器错误:EmployeeFakeemployeeStub;错误是:1>c:\someclasstests.cpp(22):errorC2512:'MyNamespace::EmployeeFake':noappropriatedefaultconstructoravailable假员工:classEmployeeFake:publicEmployee{public:MOCK_CONST_METHOD0(GetSalary,double());}员工:classEmploy

ios - 在单元测试中模拟 UserDefaults 对象返回 _ArrayBuffer

我试图在我的单元测试中删除对操作系统对象(如URLSessions和UserDefaults)的依赖性。我一直在尝试将预缓存数据模拟到我为测试目的而创建的模拟UserDefaults对象中。我制作了一个具有编码和解码功能的测试类,并将模拟数据存储在一个成员变量中,该成员变量是一个[String:AnyObject]字典。在我的应用程序中,启动时它将检查缓存中的数据,如果找到任何数据,则会跳过网络调用。所有我能得到的都是nil或这个持续错误:fatalerror:NSArrayelementfailedtomatchtheSwiftArrayElementtype查看调试器,解码器应该返