LINUX.ORG.RU

Тестирование функции с помощью ctest.h

 , ,


0

1

Нужно протестировать функцию, которая предлагает ввести число, если есть хотя бы один символ, отличный от цифр, то предлагается заново ввести число и так до тех пор, пока не введем корректное число. Т.е. функция имеет один выход (return) и он происходит только при корректном вводе. Собственно как ее можно протестировать, используя макросы?

Разделить на две:

do {
    str = do_input();
} while( ! is_valid_input(str) );
и тестировать is_valid_input().

gag ★★★★★
()

как ее можно протестировать

На выбор:

  • выделяй ввод в отдельную функцию, чтобы его можно заменить для теста;
  • пересиль функцию ввода, если в библиотечной функции символ слабый;
  • переименуй функцию ввода макросом, чтобы подставить свою;
  • сделай небольшое приложение и тестируй его expect'ом.
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Например я хочу использовать макрос ASSERT_EQUAL(ожидаемый результат, реальный результат)? Как его использовать, если ввод происходит в самой функции и я не могу ни как предугадать результат, чтобы сравнить?

kennydzzze
() автор топика
Ответ на: комментарий от gag

Здесь получается, что я выхожу из цикла, если ввожу верное значение? Но я не могу ввести неверное значение, защита в самой функции не дает это сделать? Как показать, что функция работает правильно, если вводить «фигню», а не цифры?

kennydzzze
() автор топика
Ответ на: комментарий от kennydzzze

Я предложил аж четыре варианта на выбор. Ты можешь описать, как ты понимаешь каждый? В двух-трёх предложениях на каждый пункт.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ничто не понял. Третий пункт представил, но скорее всего не верно. п.с. Возможно на небольших примерах картина прояснилась бы, на словах не понял ничего. Слабый символ? Пересилить функцию? expect?

kennydzzze
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.