我正在编写一个简单的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,但功能是静态的。
我想知道在这种情况下测试它的好方法是什么?
答案 0 :(得分:1)
我认为这取决于TryDownload和TryDelete函数中的内容。如果他们使用其他一些对象/函数来执行他们的任务,您可以配置这些对象的模拟,以便您的TryDownload和TryDelete不知道他们没有真正下载/删除任何内容。
如果你没有这样的对象/函数(并且所有东西都包含在TryDownload / TryDelete中),有人可能会认为代码不适合单元测试,因为它不能分解成小单元。在这种情况下,您唯一的选择是实际的Web服务(可能在localhost上运行),让这些功能可以完成它们的工作。
答案 1 :(得分:0)
我建议的一种方法是在单元测试框架中使用Google Mock库。
使用Google模拟库,您可以完全按照您的说明进行操作。