Должен ли я проверить входные переменные (указатели) в фиктивной функции?

Я пишу серию фиктивных функций в C, используя CMocka

Некоторые из них принимают указатели в качестве входных переменных, и я не уверен, стоит ли их проверять (ptr != NULL) или нет.

В целом, отвечает ли фиктивная функция за проверку ввода?

Если да, как он должен вести себя при обнаружении ошибки? Должен ли он использовать функции assert, предоставляемые фреймворком?

1 ответ

Решение

Если упомянутые вами указатели являются параметрами, которые передаются некоторым поддельным функциям, вы можете проверить их с помощью check_expected(...) а также expect_value(),

void function_under_test(){
   char c = 'c'; 
   int ret;
   //...
   ret = subfunction(&c);
   if(ret == 0)
      printf("Success");
   //...
}

int __wrap_mocked_subfunction(int* p_paramater){
   check_expected(p_paramater);
   return mock();
}

test(void **state){
    expect_not_value(__wrap_mocked_functions, p_paramater, NULL);
    will_return(0);

    function_under_test();
}

Ошибки сообщаются автоматически.

Пример можно найти здесь: https://lwn.net/Articles/558106/

Если вам действительно нужно их проверить, зависит от вас, вашего кода, вашего мнения и ваших требований.

Другие вопросы по тегам