3

我在想是否有任何框架/库提供了一种机制来测试共享库未导出的功能。

我想测试共享库的“t”部分中列出的函数的工作情况。对于“T”部分中的测试功能,我使用了 cppunit。

测试场景:有一个使用“ __ attribute __ ((visibility("default"))) ”导出的类,它声明了另一个具有“ __ attribute __ ((visibility("hidden"))) ”的类的变量在同一个库中定义。我想用“ __ attribute __ ((visibility("hidden"))) ”属性来测试这个类。

库的编程语言是c++

编译器 gcc 4.1.2

平台 RedHat/Solaris

4

2 回答 2

6

由于单元测试应该对他们测试的代码有深入的了解,单元测试也可以使用一段代码的普通用户无法使用的技巧。

这里可能使用的技巧是:

  • 确保单元测试和被测代码链接为单个可执行文件,而无需先在库中构建被测代码。
  • 在构建单元测试时使用预处理器宏来禁用可见性属性。
于 2013-03-15T11:01:13.623 回答
2

如果您想使用您正在运送的相同二进制文件测试这些功能,我只知道一个实用的解决方案:在您的库中构建某种维护舱口

这意味着,将一些公开导出的函数添加到调用您要测试的内部函数的库中。使用该函数的名称,明确这些名称仅用于测试目的,lib 的“普通用户”不应使用它们。将这些方法的文档保存在内部,以使外人很难使用它们。在官方文档中添加一个明确的警告,例如,所有以前缀“TEST_”开头的方法都不能被普通用户使用,并且每个版本都会发生变化。

如果有人也如此无知使用这种方法,请不要在意 - 你无法阻止这些人将自己射入脚底。

于 2013-03-15T16:45:00.847 回答