使用 C 函数时如何测试 C++ 代码
How to test C++ code when using C functions
我写了一个c++class,这个class使用了第三方写的c函数库
extern "C" {
#include "nats/nats.h"
}
class NatsConnection {
public:
void Connect() {
natsConnection_Connect(&natsConnection_, natsOptions_);
natsConnection_SubscribeSync(&natsSubscription_, natsConnection_,
configuration_.subject.c_str());
// some other c++ code.
}
}
上面的class使用了从c导入的函数:natsConnection_Connect
, natsConnection_SubscribeSync
.
现在我需要写一个单元测试来覆盖some other c++ code
,我正在使用gtest
,我知道如何模拟C++ class,但是一旦我使用了C代码我不知道如何开始。
我该如何编写测试?有最佳实践吗?
如果我没猜错,你想为 C 函数编写单元测试。也许你可以为 C 函数编写一个包装器,比如:
return_type natsConnection_Connect_CPP(arg1, arg2, ..., argN)
{
return natsConnection(arg1,arg2,...,argN);
};
然后你就可以使用 gtest 来实现你的功能了。我对 gtest 不熟悉,因为我以前从未使用过它。
如果您要测试 C++ class,则模拟该 C++ 并将其视为一个单元,无论它在内部调用什么。
如果您想测试 C++ class 的内部结构,包括 C 函数调用,那么 C 函数通常被简单的 #define
类函数宏模拟。示例:
#include <stdio.h>
void function (int x)
{
printf("%d\n", x);
}
#define function(x) function(1)
int main (void)
{
function(2); // prints 1
}
我写了一个c++class,这个class使用了第三方写的c函数库
extern "C" {
#include "nats/nats.h"
}
class NatsConnection {
public:
void Connect() {
natsConnection_Connect(&natsConnection_, natsOptions_);
natsConnection_SubscribeSync(&natsSubscription_, natsConnection_,
configuration_.subject.c_str());
// some other c++ code.
}
}
上面的class使用了从c导入的函数:natsConnection_Connect
, natsConnection_SubscribeSync
.
现在我需要写一个单元测试来覆盖some other c++ code
,我正在使用gtest
,我知道如何模拟C++ class,但是一旦我使用了C代码我不知道如何开始。
我该如何编写测试?有最佳实践吗?
如果我没猜错,你想为 C 函数编写单元测试。也许你可以为 C 函数编写一个包装器,比如:
return_type natsConnection_Connect_CPP(arg1, arg2, ..., argN)
{
return natsConnection(arg1,arg2,...,argN);
};
然后你就可以使用 gtest 来实现你的功能了。我对 gtest 不熟悉,因为我以前从未使用过它。
如果您要测试 C++ class,则模拟该 C++ 并将其视为一个单元,无论它在内部调用什么。
如果您想测试 C++ class 的内部结构,包括 C 函数调用,那么 C 函数通常被简单的 #define
类函数宏模拟。示例:
#include <stdio.h>
void function (int x)
{
printf("%d\n", x);
}
#define function(x) function(1)
int main (void)
{
function(2); // prints 1
}