Глобальные переменные C++, привязанные ко всем юнит-тестам после установкиC++

Программы на C++. Форум разработчиков
Anonymous
Глобальные переменные C++, привязанные ко всем юнит-тестам после установки

Сообщение Anonymous »

Я застрял, пытаясь изолировать свои тестовые примеры с точки зрения глобальных переменных.
В моем файле core.h

Код: Выделить всё

int globalMethod();
В моем core.cpp

Код: Выделить всё

#include "core.h"
bool globalVar = false;

int globalMethod() {
globalVar = true;
return true;
};
В моем myextns_test.cpp (соответствует myextns.h)

Код: Выделить всё

#include 
#include 
#include 

BOOST_AUTO_TEST_SUITE(ourextns)
BOOST_AUTO_TEST_SUITE(myextns)

BOOST_AUTO_TEST_CASE(case1)
{
globalMethod();
bool result = myFirstMethod(); // does not fail because globalVar is true
BOOST_REQUIRE(result);
}

BOOST_AUTO_TEST_CASE(case2)
{
someother_api_method(); // internally CHECKS globalVar is true or not and finds true!!
bool result = mySecondMethod(); // !!succeeds as the method before this succeeded - it should fail
BOOST_REQUIRE(result); // success
}

BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
Причина в том, что Case1 и Case2 получают указатель на одну и ту же глобальную переменную. Я читаю Fixtures, но, похоже, я ничего не могу сделать, поскольку переменная является глобальной и к ней нельзя получить доступ извне. Кто-нибудь знает, как это решить? Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... s-once-set

Вернуться в «C++»