c++ - 私有(private)方法的单元测试

标签 c++ unit-testing private-methods

我正在编写一些单元测试。 特别想测试一些私有(private)方法。

到目前为止,我已经想出了使用。

#define private public

但我对此并不满意,因为从单元测试的角度来看,它会破坏所有封装。

你使用什么方法对私有(private)方法进行单元测试。

最佳答案

与您在问题中提到的讨厌的 #define hack 相比,更简洁的机制是使测试成为被测类的 friend 。这允许测试代码(并且只是测试代码)访问私有(private)数据,同时保护它们免受其他任何事情的影响。

但是,最好通过公共(public)接口(interface)进行测试。如果你的 X 类在私有(private)成员函数中有很多代码,那么可能值得提取一个新的 Y 类,它被 X 类的实现使用。然后可以通过它的公共(public)接口(interface)测试这个新的 Y 类,而不会暴露它的用于 X 类的客户。

关于c++ - 私有(private)方法的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676664/

相关文章:

java - 为什么 C/C++ "Hello World"以千字节为单位?

visual-studio-2008 - 使用 CruiseControl.NET 自动进行 Silverlight 单元测试

c++ - 函数返回迭代器到 vector

c++ - 通过格式化连接 __FILE__ 和 __LINE__ 的宏

c++ - 使用递归宏编写函数的参数

c# - 用假数据预填充对象

javascript - 使用 Jasmine 测试 Angular 服务时,脚本的包含顺序是否导致此未知提供程序错误

javascript - 如何让私有(private)方法在 TypeScript 中工作?

javascript - 使用 CoffeeScript 在 “private method” 类中获取 “public function”

c++ - 为什么在下面的代码中复制构造函数是私有(private)的时会出现错误 C2248?