我正在寻找C++编码风格的最佳实践,以确保简化单元测试。问题来自尝试为私有(private)数据成员实现模拟类。在类中可以通过几种不同的方法访问私有(private)数据成员。到目前为止,我能找到的所有示例都显示了如何编写模拟类,但没有如何最好地编写将同时使用真实对象和模拟对象的代码。
在下面的示例中,我不确定如何从类型MyOtherClass到我的模拟MockMyOtherClass获取mCustom。我怀疑我的方法是错误的,因此是问题。
class MyClass {
MyOtherClass mCustom;
};
[编辑]
我使用了一个编译器指令,并添加了一个新的构造函数。
#ifdef UNIT_TESTING
#include "mock.h"
#else
#include "myotherclass.h"
#endif
class MyClass {
MyOtherClass mCustom;
public:
MyClass(MyOtherClass pClass) : mCustom(pClass) {}
};
最佳答案
您可以使用几种不同的策略工具(并根据需要混合使用)。
class MyClass {
private:
MyOtherClass mCustom;
public:
//...
};
template <class T>
class MyClass_impl {
private:
T mCustom;
public:
//...
};
typedef MyClass_impl<MyOtherClass> MyClass; // convenience typedef
class MyClass {
public:
MyClass(MyOtherClass* aCustom) : mCustom(aCustom) {}
private:
MyOtherClass* mCustom;
public:
//...
};