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

Best way to test C++ global variables in gtests

本文关键字:最佳 方法 全局变量 C++ gtests 测试      更新时间:2023-10-16

我有一个配置了函数的全局变量。我正在编写一个 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.