我正在编写一个简单的C++类,并尝试对代码进行单元测试。

代码很简单:

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的概念,我们无法在网络连接上进行中继。因此,单元测试不能真正运行下载代码。我的最终目标只是测试代码路径,例如:当传递TRUE时,应该点击下载代码路径,否则应该点击删除逻辑。我当时正在考虑重写此类,因此可以重写download和delete函数以仅设置标志和noop,但这些函数是静态的。

我想知道在这种情况下什么是测试它的好方法?

最佳答案

我认为这取决于TryDownload和TryDelete函数中的内容。如果他们使用其他一些对象/功能来执行任务,则可以配置这些对象的模拟,以便您的TryDownload和TryDelete不知道它们并没有真正下载/删除任何内容。

如果您没有这样的对象/函数(并且所有内容都包含在TryDownload / TryDelete中),则可能会争辩说该代码不适合单元测试,因为它不能分解成小单元。在这种情况下,您唯一的选择是使这些功能发挥作用的实际Web服务(也许在localhost上运行)。

10-07 19:52
查看更多