14 c++ unit-testing googletest
我正在开发一个程序性的C/C++项目.公共接口由4个函数组成,每个函数都有相当复杂的任务.cpp在未命名的命名空间中,在同一文件中声明了辅助函数.正在使用的测试框架是GTest.
但是,其中一些辅助函数变得非常复杂,需要进行自己的单元测试.通常,我会将这些助手重构为他们自己的可测试单元,但项目要求说明所有需要在一个中cpp,并且只有指定的功能可以公开显示.
有没有一种方法可以在最小化耦合的同时对辅助功能进行单元测试,并尽可能地遵循项目要求?
我可能的解决方案是使用宏将命名空间转换为命名的命名空间以进行测试,并为生产命名.然而,这似乎比我想要的更麻烦.
Joh*_*web 14
匿名namespace中的定义和声明仅在同一翻译单元中可见.
您可以采用两种方法对这些私有函数进行单元测试.
您可以#include在.cpp文件中测试整个_test.cpp文件.(#include荷兰国际集团.cpp的文件是不重用代码的好办法-你不应该在生产代码做到这一点!)
也许更好的做法是专用代码移动到foo::internal namespace,这里foo就是namespace你的项目通常使用,并把私有的声明在-internal.h文件中.您的生产.cpp文件和测试允许包含此内部标题,但您的客户不允许.这样,您就可以完全测试内部实现,而不会泄漏给客户.