我有一个配置了函数的全局变量。我正在编写一个 gtest 来测试函数是否正常工作,方法是检查调用函数后全局变量是否更改。
主要.cpp:
bool flag{false};
void FlipFlag() {
flag = true;
}
在main.h中:
void FlipFlag();
在main_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
存在于某处,并将在链接时解析它。
可以从其他翻译单元中的范围引用该名称。
*.cpp文件是"翻译单元"。
以下是一些关于 extern 的文档。
从单元测试 C 中的答案中获取一个叶子 函数不在 header 中,一种方法是在仅由 gtest 使用的私有头文件中使用extern
。因此,除了上面问题中声明的文件之外,还将有一个额外的头文件,main_pi.h
声明extern bool flag
.