使用C函数时如何测试C++代码

问题描述 投票:0回答:1

我写了一个c++类,这个类使用了第三方编写的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.
  }
}

上面的类使用了从c导入的函数。natsConnection_Connect, natsConnection_SubscribeSync.

现在我需要写一个单元测试来涵盖 some other c++ code我使用的是 gtest,我知道如何模拟一个C++类,但是一旦使用C代码就不知道如何下手。

我怎么写测试?有没有一个最佳实践?

c++ c unit-testing googletest
1个回答
0
投票

如果我没理解错的话,你想为C函数写一个单元测试。也许你可以为C函数写一个封装器,比如说。

return_type natsConnection_Connect_CPP(arg1, arg2, ..., argN)
{
return natsConnection(arg1,arg2,...,argN);
};

然后你就可以用gtest来测试你的函数。我对gtest不熟悉,因为我从来没有用过它。


0
投票

如果你要测试C++类,那就模拟那个类,把它当作一个单元,不管它内部调用什么。

如果你要测试C++类的内部,包括C函数的调用,那么C函数常用简单的mocking #define 类似函数的宏。例如:

#include <stdio.h>

void function (int x)
{
  printf("%d\n", x);
}

#define function(x) function(1)

int main (void)
{
  function(2); // prints 1
}
© www.soinside.com 2019 - 2024. All rights reserved.