我从未使用测试驱动开发进行过开发,也从未使用模拟对象进行单元测试。我总是对不包含应用程序其他方面的简单对象进行单元测试,然后转向不太简单的对象,这些对象仅引用已经过单元测试的对象。这往往会进行到最终的“单元”测试是组件测试。
使用了哪些设计技术可以尽可能轻松地用 Mock 对象替换内部类?
例如,在我的代码中,我会将 myDataClass 的头文件包含在 myWorkerClass 中。 myDataClass 由 myWorkerClass 构造,其生命周期与 myWorkerClass 绑定(bind)。您如何设置它以便在硬连线包含时包含模拟的 myDataClass?
最佳答案
初学者的答案是:
- 在测试类中不要使用实际的 模拟的类型,使用它 界面
- 测试时提供 模拟对象的另一种实现 界面
//Common header
class ObjectInterface {
public:
virtual void doThings()=0;
};
//Release
class RealObject: public ObjectInterface {
public:
virtual void doThings(){
//Complicated work here
}
};
//Testing
class MockedObject: public ObjectInterface {
public:
virtual void doThings(){
//Not so complicated work here
}
};
//Common header
class TestedClass {
public:
void useObject(ObjectInterface & object) {
object->doThings();
}
};
//Unit test
TestedClass toTest;
MockedObject mockedObject;
toTest.useObject(mockedObject);
关于c++ - 您如何设计 C++ 应用程序才能使模拟对象最易于使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1421277/