共享库的私有函数的单元测试
Unit testing for private functions of a shared library
我在想是否有任何框架/库提供一种机制来测试共享库没有导出的函数。
我想测试在共享库的"t"部分列出的函数的工作。为了测试"T"节中的函数,我使用了cppunit.
测试场景:有一个使用"__属性__ ((visibility("default"))))"导出的类,它声明了另一个类的变量,该变量具有在同一库中定义的"__属性__ ((visibility("hidden")))"。我想用"__属性__ ((visibility("hidden")))"属性来测试这个类。
库的编程语言为c++
编译GCC 4.1.2
平台RedHat/Solaris
由于单元测试应该对他们测试的代码有深入的了解,单元测试也可以使用代码段的普通用户无法使用的技巧。
可以使用的技巧有:
- 确保单元测试和待测代码被链接为单个可执行文件,而不必先在库中构建待测代码。
- 使用预处理器宏在为单元测试构建时禁用可见性属性。
如果您想使用您所提供的相同二进制文件测试这些函数,我知道只有一个实用的解决方案:在库中构建某种维护舱口。
这意味着,将一些公开导出的函数添加到库中,这些函数调用您想要测试的内部函数。使用函数的名称,明确这些函数仅用于测试目的,它们不应该被库的"普通用户"使用。将这些方法的文档保留在内部,以使外部人员很难使用它们。在官方文档中添加一个明确的警告,例如,所有以前缀"TEST_"开头的方法都不能被普通用户使用,并且在每个版本中都可能发生变化。
如果有人如此无知地使用这些方法,那就别管了——你无法阻止这样的人搬起石头砸自己的脚。
相关文章:
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 在C++单元测试上下文中,抽象基类是否应将其他抽象基类作为函数参数
- C++ gmock - 我们如何在单元测试 cpp 文件中读取/获取 cpp 文件函数的参数值
- 在类 gtest/gmock 进行单元测试时模拟成员函数C++
- 如何正确地对 constexpr 函数进行单元测试
- 如何使用私有构造函数对类进行单元测试?
- 在为函数编写单元测试时,我应该模拟所做的内部函数调用吗?
- Qt单元测试:指针列表上的QCOMPARE函数
- 如何检查函数是在C++单元测试中的析构函数中调用的
- 我们应该修改单元测试的函数签名吗?
- 检测单元测试中的特定函数调用
- 单元测试呼叫实例变量的函数
- 如何使用 gtest 对 std::bind 函数进行单元测试
- 如何为将回调作为其参数的函数编写单元测试
- 在单元测试(Nunit或MSTest)中从C#中调用的C 函数的原因是从控制台应用程序中运行的同一代码的不同结果
- 静态函数的单元测试设计模式
- 如何嵌入实时单元测试函数的主体作为 Doxygen 的示例用法
- 使用 Qt 进行单元测试:更改测试函数中使用的标准路径
- 析构函数单元测试会被优化掉吗?