c++ - 谷歌测试和静态局部变量

标签 c++ unit-testing static static-members googletest

我有一个包含static unsigned int 的方法,因此它可以返回连续的目录名称。像这样的东西:

string MyClass::createDirectory() const
{
    static unsigned int i = 0;
    stringstream ss;
    string directory;
    do
    {
        ++i;
        ss.str("");
        ss << "/" << setfill('0') << setw(6) << i;
        directory = m_rootDirectory + ss.str();

    } while(!m_filesystem->createDirectory((directory)));

    return directory;
}

我知道这是一个非常幼稚的解决方案,但现在已经足够好了。

但是我在编写单元测试时遇到了问题——静态变量在测试用例之间递增。

有没有办法重置这样的变量?还是将静态方法变量更改为非静态类成员是我唯一的选择?

我正在使用 Google 测试框架。

最佳答案

您无法在其声明的函数范围之外重置静态局部变量。

我会尝试在没有静态本地的情况下实现您的 MyClass::createDirectory 函数,即使它需要重新定义函数的签名甚至整个类的接口(interface)。

关于c++ - 谷歌测试和静态局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649951/

相关文章:

java - 这个静态 block 在 jdk 1.7 中是如何执行的

c# - 如何在另一个命名空间的静态类中将 Listview 绑定(bind)到 Observablecollection

c++ - 如何将 Eigen FFT 与 MatrixXf 一起使用?

c++ - 通过函数传递模板参数时出错

c++ - 关于windows中的owner和owned window

java - 使用 junit 测试输入

c# - 单元测试 - 如何检查类是否并行访问外部资源?

c++ - 使用 Catch 比较 double vector

c++ - 纹理未应用于二维几何体

c++ - 静态类成员,这是一个结构