c++ - 静态函数的单元测试设计模式

标签 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,但这些功能是静态的。

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

最佳答案

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

如果您没有这样的对象/函数(所有内容都包含在 TryDownload/TryDelete 中),有人可能会争辩说该代码不适合进行单元测试,因为它不能被分解成小单元。在这种情况下,您唯一的选择是一个实际的 Web 服务(可能在本地主机上运行),让这些功能完成它们的工作。

关于c++ - 静态函数的单元测试设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668966/

相关文章:

c++ - 是否可以从 SFML 中的音频样本中拆分左右声道?

javascript - 像 Jasmine 一样测试 Angular Controller

ScalaTest - 根据输入/预期输出创建动态测试 (forAll)

javascript - 如何在 Internet Explorer 中触发 script.onerror?

unit-testing - 如何从命令行运行 JUnit 测试用例

c++ - 为什么 make 会忽略我的修改?

c++ - 使用 std::shared_ptr 的 std::priority_queue 派生类的编译错误

python - 为 Python 创建 C++ 扩展

c++ - 更改函数中的全局变量

unit-testing - 如何证明我的利益相关者和经理我的软件有效?