我见过许多在单元测试时访问私有变量的疯狂方法。我见过的最震撼人心的是#define private public
.
但是,我从未见过有人建议在编译器级别关闭私有变量。我一直以为你不能。我向许多开发人员抱怨说,如果您可以告诉编译器放弃这个文件,单元测试就会容易得多。
然后我偶然发现-fno-access-control
GCC 编译器选项。这显然是单元测试的完美方式。您的原始源文件未经修改,没有仅为了单元测试而注入的朋友,也没有使用奇怪的预处理器魔法重新编译。只需在编译单元测试时轻按“无访问控制”开关即可。
我错过了什么吗?这是我希望的单元测试灵丹妙药吗?
我看到的唯一缺点是该技术特定于 GCC 的性质。不过,我认为 MSVS 有类似的标志。
我认为单元测试不需要访问私人成员。
一般来说,单元测试的目的是测试界面到你的类,而不是内部实现。这样,只有当接口受到损害时,对内部结构的更改才会破坏测试。
看看我的answer https://stackoverflow.com/questions/342037/testing-classes/342065#342065类似的问题,以及随后的讨论。诚然,这是一个有争议的话题,但那是我的 0.02 美元。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)