C++桩模块和驱动模块详解

桩模块驱动模块对于测试和调试使用函数的程序是非常有用的工具。它们允许测试程序中的单个函数,隔离调用该函数的程序部分。

桩模块(Stub)

桩模块(Stub)是一个被调用的虚拟函数,而不是它所代表的实际函数。它通常显示一个测试消息,确认它已被调用,然后就没有其他了。

例如,如果在某个程序中使用了一个桩模块用于代替 showFees 函数,那么它可能如下所示:
// showFees函数的桩模块
void showFees(string memberType, double rate, int months)
{
    cout << "The function showFees was called with arguments:\n"<< "Member type: "<< memberType << endl << "rate: " << rate << endl << "months: " << months << endl;
}
桩模块一旦建立,程序就可以使用此桩模块而不是实际的 showFees 函数来模拟运行程序。因此,通过使用桩模块替换实际的函数,可以将测试工作集中在调用该函数的程序部分。

最主要的是,桩模块允许程序员在需要时确定程序是否正在调用一个函数,并确定有效值是否被传递给该函数。如果桩模块代表了返回值的函数,那么它应该返回一个测试值,这有助于确认返回值将被正确处理。

驱动模块(Driver)

当调用函数的程序部分被调试到满意时,程序员就可以继续测试和调试实际的函数本身,而这正是驱动模块变得有用的地方。

驱动模块(Driver)是通过简化调用来测试函数的程序。如果函数接收任何实参,驱动模块会传递测试数据。如果函数返回一个值,驱动模块会在屏幕上显示返回值。这样就可以在隔离程序的其余部分的情况下,让程序员看到被测试函数的执行方式。

因此,驱动模块的作用是用来彻底测试函数,它可以使用不同的测试值作为实参重复调用函数。当函数能够按照目标要求执行时,即可将其放入实际的程序中。