googletest с глобальной статической переменной

#c #googletest

#c #googletest

Вопрос:

давайте представим, что у нас есть следующий фрагмент кода

 // myfile.c
#include myfile.h

static int global_static_value;

bool check_it(int value) {
   if (global_static_value== value) {
    return true;
   } else {
    return false
   }
}

void set_value(int value) {
   global_static_value = value;
}

// myfile.h

bool check_it(int value)
void set_value(int value)
 

Как написать Google test для функции bool check_it(int value) , чтобы протестировать true и false вернуть значение?

PS: это не разрешено #include myfile.c в Google test

Комментарии:

1. Просто напишите вспомогательную функцию, которая позволит вам изменять значение. Возможно, дизайн ошибочен, если ему нужны глобальные переменные. Вы могли бы сделать это с #ifdef google_test помощью, если вы не хотите, чтобы функция была включена в рабочий код. При каких условиях устанавливается это значение?

2. @Devolus не разрешается вносить такие изменения.

3. ОК. Но тогда у вас должно быть условие, для которого задано значение, иначе значение не имеет смысла, поэтому вы можете принудительно выполнить это условие в нужном направлении. На мой взгляд, следует писать тесты не для любого произвольного условия, а для сценариев использования.

4. И у вас все равно есть эта set_value функция, так что вы всегда можете вызвать ее в своем тестовом наборе.

Ответ №1:

 TEST_F(MyTestClass, MyTest)
{
    set_value(1);
    EXPECT_FALSE(check_it(2));
    EXPECT_TRUE(check_it(1));
}