Avi*_*ano 5 c++ testing unit-testing
cpp的新手(Java专家)。
我有具有方法sendMail(txt)的第三方库。我不想测试图书馆。我想测试自己的方法,因此,为了做到这一点,我需要模拟库调用。
我自己的方法如下所示:
#include "mailsender.h"
int run(txt){
analysis(txt);
...
...
int status = sendMail(txt);//sendMail is a 3rd party library call. i need to mock it.its not part of the unit test
return status;
}
Run Code Online (Sandbox Code Playgroud)
在Java中,mailsender是接口,并且已注入到我的类中,因此在进行测试的情况下,我将注入模拟。在cpp中模拟库调用的良好实践是什么?我可以将第3方库调用包装在一个类中并注入该类,但是我正在寻找更简单且更常见的方法(也许是ifndf)。
我对googlemock很熟悉。googlemock允许我模拟类。我不知道如何在我测试的方法中模拟呼叫。
所以我假设你有一个在库中实现的“全局”函数,你都包含一个头文件(以获取定义)和链接(以获取实现)。
您显然需要用您自己的库替换库的实现 - 一个“什么都不做”的库,因此您可以通过两种方式执行此操作:
后者更容易,但您可能还需要修改您的程序以不与第 3 方库链接。这也可能需要更改#include,因为某些编译器(例如VC++)允许您在源代码中嵌入链接器指令。如果您这样做,那么您将无法阻止链接器包含第 3 方库。
另一种选择是修改您的代码以使用对 sendMail 调用的不同调用,例如您自己实现的 test__sendMail()。包装这是一个宏,根据您的构建选项有条件地包含您的或实际的函数调用。
如果这是一个 C++ 库,那么您可能可以像以前一样使用模拟框架,但它听起来像是一个 C 库,它们只是提供了一个您直接在代码中使用的函数列表。您可以将库包装在您自己的类中并使用它,而不是直接调用 3rd 方库函数。
归档时间: |
|
查看次数: |
4641 次 |
最近记录: |