#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));
}