如何使用谷歌测试与免费功能在匿名命名空间

How to use google test with free functions in anonymous namespaces?

本文关键字:命名空间 功能 免费 何使用 谷歌 测试      更新时间:2023-10-16

我有一个类做很多事情。为了将工作分割成逻辑单元,我在匿名命名空间中创建了许多自由函数,因为它们只在这个类中使用。

我目前使用gtest单元测试我的类。我如何为我的匿名命名空间自由函数实现单元测试?

首先,不应该在头文件中使用匿名命名空间中的函数。

这意味着你想在源文件的匿名命名空间中对你的函数进行单元测试。

最简单的答案是:你不能也不要使用这些函数,因为它们只对定义它们的源文件(翻译单元)可用。

但是,您可以调用方法和函数,调用这些函数,并测试它们的输出。

另一个选择是将它们移出匿名命名空间,并在头文件中声明。然后可以使用某种惟一的名称空间。例如:

// header
int someFunc();
namespace hidden {
float myFunc1(int);
}

Google建议在测试中包含.cpp文件。我认为这是一个小的代价来保持我的源代码干净。

没有人可以访问.cpp中的匿名名称空间中的函数,所以如果您确实需要测试您的函数,请将这些函数放在一个微妙的名称空间或类似的东西中。参考实现在chrome

namespace xxx {
namespace subtle {
   your help functions..
}
}