c++ - 在测试中测试 C++ 全局变量的最佳方法

标签 c++ global-variables googletest

我有一个配置有函数的全局变量。我正在编写一个 gtest 来测试函数是否正常工作,方法是检查调用函数后全局变量是否发生变化。

ma​​in.cpp中:

bool flag{false};
void FlipFlag() {
    flag = true;
}

ma​​in.h中:

void FlipFlag();

ma​​in_TEST.cpp中:

#include "gtest/gtest.h"
#include "main.h"

TEST(MainTest, TestFlagFlip) {
    EXPECT_FALSE(flag);
    FlagFlip();
    EXPECT_TRUE(flag);
}

如何访问变量 flag 进行测试?我不想在 main.h 中声明 flag。这是测试旗帜的最佳方式吗?

最佳答案

将此添加到 main.h:

extern bool flag;

这告诉链接器 flag 存在于某处,并将在链接时解析它。

The name can be referred to from the scopes in the other translation units.

*.cpp 文件是“翻译单元”。

这是 some documentation about extern .

关于c++ - 在测试中测试 C++ 全局变量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048690/

相关文章:

c++ - 在linux/mac中获取一个多字节字符的 "char"

c++ - is<thing> 等价于 char32_t

c++ - fstream 的默认模式

c - 结构中的多种类型 - C

global-variables - 我可以从 Jekyll 包含中修改全局 Liquid 变量吗?

c++ - 如何在重用 std::stringstream 变量时避免使用 std::stringstream.str() 和 std::stringstream.clear() ?

c++ - Google Test 中调用的基本方法

c++ - 我在 Mac OS X 上的 .dylib 文件在哪里?

python-3.x - Python 3 Pycharm ide 警告

c++ - 如何将 Cppunit 测试迁移到 GoogleTest?