静态函数的单元测试设计模式 我正在编写一个简单的C++类,并试图为代码提供一个统一的例子。
代码非常简单,如下所示:静态函数的单元测试设计模式 我正在编写一个简单的C++类,并试图为代码提供一个统一的例子。,c++,unit-testing,C++,Unit Testing,代码非常简单,如下所示: class Foo { static int EntryFunction(bool flag) { if(flag) { TryDownload(); } else { TryDeleteFile(); } return 0; } static void TryDownload() { // http download code } static void TryDe
class Foo
{
static int EntryFunction(bool flag)
{
if(flag)
{
TryDownload();
}
else
{
TryDeleteFile();
}
return 0;
}
static void TryDownload()
{
// http download code
}
static void TryDeleteFile()
{
// delete file code
}
}
问题是,根据UT的概念,我们不能在网络连接上中继。因此unittest无法真正运行下载代码。我的最终目标只是测试代码路径,例如:当传入TRUE
时,应该命中下载代码路径,否则应该命中删除逻辑。我想重写这个类,这样就可以重写下载和删除函数,只需设置一个标志和noop,但函数是静态的
在这种情况下,我想知道什么是测试它的好方法?我可以建议的方法之一是在单元测试框架中使用库
使用Google mock library,您可以完全按照您所解释的操作。我认为这取决于TryDownload和TryDelete函数中的内容。如果他们使用一些其他对象/函数来执行任务,您可以配置这些对象的模拟,以便您的TryDownload和TryDelete不知道他们的对象实际上没有下载/删除任何内容 如果您没有这样的对象/函数(所有内容都包含在TryDownload/TryDelete中),您可能会认为代码不适合进行单元测试,因为它不能分解为小单元。在这种情况下,您唯一的选择是一个实际的web服务(可能在本地主机上运行),它允许这些函数完成它们的工作