如何使用谷歌测试与免费功能在匿名命名空间
How to use google test with free functions in anonymous namespaces?
我有一个类做很多事情。为了将工作分割成逻辑单元,我在匿名命名空间中创建了许多自由函数,因为它们只在这个类中使用。
我目前使用gtest单元测试我的类。我如何为我的匿名命名空间自由函数实现单元测试?
首先,不应该在头文件中使用匿名命名空间中的函数。
这意味着你想在源文件的匿名命名空间中对你的函数进行单元测试。
最简单的答案是:你不能也不要使用这些函数,因为它们只对定义它们的源文件(翻译单元)可用。
但是,您可以调用方法和函数,调用这些函数,并测试它们的输出。
另一个选择是将它们移出匿名命名空间,并在头文件中声明。然后可以使用某种惟一的名称空间。例如:
// header
int someFunc();
namespace hidden {
float myFunc1(int);
}
Google建议在测试中包含.cpp文件。我认为这是一个小的代价来保持我的源代码干净。
没有人可以访问.cpp中的匿名名称空间中的函数,所以如果您确实需要测试您的函数,请将这些函数放在一个微妙的名称空间或类似的东西中。参考实现在chrome
namespace xxx {
namespace subtle {
your help functions..
}
}
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- Visual C:命名空间范围错误或晦涩功能?
- 如何在类中实现可选择的类似命名空间的功能?
- 如何在另一个名称空间内从另一个命名空间内明确专业化功能模板
- 命名空间内的范围功能与课堂内的功能
- 在没有资格的命名空间中调用功能
- 为什么命名空间内的自由功能模棱两可
- 如何使用谷歌测试与免费功能在匿名命名空间