我正在编写一个简单的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上运行)。