如何在匿名命名空间中使用google test和免费功能?

时间:2014-07-07 11:36:07

标签: c++ function c++11 namespaces googletest

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

我目前正在使用gtest对我的课进行单元测试。如何为我的匿名命名空间自由函数实现单元测试?

3 个答案:

答案 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..
}
}