我有一个配置有函数的全局变量。我正在编写一个gtest,通过检查调用该函数后全局变量是否发生变化来测试该函数是否正常工作。
在 main.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
进行测试?我不想在flag
中声明main.h
。这是测试标志的最佳方法吗?
答案 0 :(得分:1)
将此添加到main.h
:
extern bool flag;
这告诉链接器flag
存在于某处,并将在链接时将其解析。
可以从其他翻译单位的范围中引用名称。
*。cpp文件是“翻译单位”。
答案 1 :(得分:0)
从Unit Testing C With Functions Not in Header中的答案中获取叶子,一种方法是在仅由gtest使用的私有头文件中使用extern
。因此,除了上述问题中声明的文件之外,还有一个附加的头文件main_pi.h
,它声明了extern bool flag
。