我有一个做很多事情的课。为了将工作分成逻辑单元,我在匿名命名空间中创建了许多自由函数,因为它们只在这个类中使用。
我目前正在使用gtest对我的课进行单元测试。如何为我的匿名命名空间自由函数实现单元测试?
答案 0 :(得分:2)
首先,你不应该在标题中的匿名命名空间中使用函数。
这意味着,您希望在源文件中的匿名命名空间中对您的函数进行单元测试。
最简单的答案是:您无法完成这些功能,因为它们仅适用于定义它们的源文件(翻译单元)。
但是,您可以调用方法和函数,调用这些函数并测试它们的输出。
另一种选择是将它们移出匿名命名空间,并在标题中声明。然后你可以使用某种独特的命名空间。例如:
// header
int someFunc();
namespace hidden {
float myFunc1(int);
}
答案 1 :(得分:1)
Google suggests,包括测试中的.cpp文件。我认为保持源代码清洁是一个很小的代价。
答案 2 :(得分:-1)
没有人可以在.cpp之外的匿名命名空间中访问你的函数,所以如果你真的需要测试你的函数,那么把这些函数放在一个微妙的命名空间或类似的东西。 chrome中的参考工具
namespace xxx {
namespace subtle {
your help functions..
}
}