xx7*_*aBs 3 qt unit-testing class private-members metaobject
我正在为我的应用程序编写单元测试,现在我偶然发现了一个我应该测试私有方法的类.这可能是特定班级设计不佳的结果,但我必须这样做.有没有办法在Qt中调用私有方法,可能使用QMetaObject或类似的东西?
对于单元测试,我使用的是QTestLib框架.
正确的(读令人讨厌的)答案是你不应该测试私有方法,那些是实现细节;-)
.
OTOH - 您是否考虑过有条件地声明它们是受保护的/私有的,这取决于您是在测试还是没有然后扩展?我过去常常用它来解决类似的问题.
#ifdef TESTING
// or maybe even public!
#define ACCESS protected
#else
#define ACCESS private
#endif
/* your class here */
class Foo {
ACCESS
int fooeyness;
}
// or better yet, place this in a different file!
#ifdef TESTING
/*
class which extends the tested class which has public accessors
*/
#endif
Run Code Online (Sandbox Code Playgroud)