静态功能的单元测试设计模式

时间:2013-12-18 21:38:58

标签: c++ unit-testing

我正在编写一个简单的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的概念,我们无法在网络连接上进行中继。所以unittest无法真正运行下载代码。我的最终目标只是测试代码路径,例如:当传入TRUE时,下载代码路径应该命中,否则删除逻辑应该命中。我想要覆盖这个类,所以下载和删除功能可以覆盖只是设置一个标志和noop,但功能是静态的。

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

2 个答案:

答案 0 :(得分:1)

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

如果你没有这样的对象/函数(并且所有东西都包含在TryDownload / TryDelete中),有人可能会认为代码不适合单元测试,因为它不能分解成小单元。在这种情况下,您唯一的选择是实际的Web服务(可能在localhost上运行),让这些功能可以完成它们的工作。

答案 1 :(得分:0)

我建议的一种方法是在单元测试框架中使用Google Mock库。

使用Google模拟库,您可以完全按照您的说明进行操作。