Лучший способ проверить глобальные переменные C ++ в gtests - PullRequest
0 голосов
/ 28 августа 2018

У меня есть глобальная переменная, настроенная с помощью функции. Я пишу тестирование, чтобы проверить, работает ли функция, проверяя, изменяется ли глобальная переменная после вызова функции.

In main.cpp :

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

В main.h :

void FlipFlag();

In main_TEST.cpp :

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

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

Как получить доступ к переменной flag для тестирования? Я не хочу объявлять flag в main.h. Это лучший способ проверить флаг?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Взяв лист из ответа в Модульное тестирование C с функциями, отсутствующими в заголовке , один из способов - использовать extern в частном заголовочном файле, который используется только gtest. Таким образом, в дополнение к файлам, объявленным в приведенном выше вопросе, будет добавлен дополнительный заголовочный файл main_pi.h, который объявляет extern bool flag.

0 голосов
/ 28 августа 2018

Добавьте это к main.h:

extern bool flag;

Это сообщает компоновщику, что flag где-то существует, и разрешит его во время ссылки.

На имя можно ссылаться из областей в других единицах перевода.

*. Файлы cpp являются «единицами перевода».

Вот некоторая документация по extern .

...