静态函数的单元测试设计模式 我正在编写一个简单的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服务(可能在本地主机上运行),它允许这些函数完成它们的工作