【发布时间】:2010-05-06 23:29:43
【问题描述】:
c++ 中的 pImpl 习惯用法旨在向该类的用户隐藏该类的实现细节(=私有成员)。 然而,它也隐藏了该类的一些依赖关系,从测试的角度来看,这些依赖关系通常被认为是不好的。
例如,如果类 A 将其实现细节隐藏在只能从 A.cpp 访问的类 AImpl 中,并且 AImpl 依赖于许多其他类,那么对类 A 进行单元测试变得非常困难,因为测试框架无法访问AImpl的方法,也没有办法将依赖注入到AImpl中。
以前有人遇到过这个问题吗?你找到解决办法了吗?
-- 编辑--
在一个相关主题上,似乎人们建议只测试接口公开的公共方法,而不是内部方法。虽然我可以从概念上理解该陈述,但我经常发现我需要单独测试私有方法。例如,当公共方法调用包含一些非平凡逻辑的私有辅助方法时。
【问题讨论】:
-
为了响应您的编辑,如果您的“私有”功能足够复杂,需要独立测试,那么您应该将其放入您独立测试的自己的模块中。
标签: c++ testing pimpl-idiom