Я искал ответ для ответа, но я его не нашел. Дело в том, что мне нужно сделать несколько тестовых примеров для программы, которую я написал на C. Дело в том, что некоторые функции используют пользовательский ввод, который заставляет мои тестовые примеры ждать ввода, чего я не хочу.C - Игнорирование пользовательских входов в CUnit?
Это один из моих тестов:
void test_is_location_free() {
Storage test_storage = new_storage();
Item test_item;
test_storage->inventory[5] = test_item;
test_storage->inventory[5].loc.shelf = 'A';
test_storage->inventory[5].loc.place = 1;
CU_ASSERT(!is_location_free(test_storage, test_item, 'A', 1));
}
Это работает, потому что is_location_free() возвращает ложь, но внутри этой функции у меня еще одна функция, которая будет держать спрашивать пользователя для нового ввода, до тех пор, выбранное место является бесплатным.
Вот как это выглядит в терминале, где он будет ждать нового пользовательского ввода для шельфа:
Suite: HELPER FUNCTIONS
Test: compare_char() ...passed
Test: first_empty_position() ...passed
Test: is_location_free() ...Location not empty, try again!
Shelf:
Есть ли способ игнорировать все входы пользователей в целом, или, возможно, определить будущее пользовательский ввод, который будет использовать мой тестовый пример?
Спасибо!
Вы можете использовать сказать '#define TESTING', а затем' #ifdef ТЕСТИРОВАНИЕ ... #else ... # endif', чтобы заменить входы готовыми статическими данными. –
Да, это может быть так. Является ли это хорошей альтернативой для использования, когда дело касается тестов? Я просто думаю, что CUnit должен иметь какую-то поддержку для этих ситуаций! – drante