首页 > 解决方案 > 使用 C 函数时如何测试 C++ 代码

问题描述

我写了一个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++cunit-testinggoogletest

解决方案


如果我猜对了,你想为 C 函数编写一个单元测试。也许您可以为 C 函数编写一个包装器,例如:

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

然后您可以将 gtest 用于您的功能。我对 gtest 不熟悉,因为我以前从未使用过它。


推荐阅读