cmocka бесплатная операция и отлов исключений
Я начал свое приключение с библиотеки cmocka, и у меня есть два вопроса.
Можно ли узнать, правильно ли была выполнена операция free()? Я имею в виду, я хотел бы проверить функцию, которая очищает древовидную структуру. Я читал о test_free(), но, честно говоря, я не понимаю, что стоит за этим.
Второе - это случай обнаружения стандартных библиотечных исключений. Я знаю о функции
expect_assert_failure
а как его использовать? Например, я хотел бы сделать что-то, что вызовет ошибку сегментации, но я все равно хотел бы пройти тестирование.
2 ответа
Я бы посоветовал просто сделать дополнительный тест с помощью valgrind.
valgrind --error-exitcode=1 ./test
Без опции valgrind всегда будет возвращать один и тот же код завершения, полученный вашей тестовой программой. Таким образом, если ваша тестовая программа выполнена успешно, но проверка памяти в valgrind выявляет ошибки, она вернет 1, чтобы указать на ошибку.
Вам нужно добавить
#define UNIT_TESTING 1
прежде чем включить cmocka.h
заголовочный файл, затем malloc
, realloc
и бесплатно переопределить и предупредит вас о утечках памяти.
expect_assert_failure()
если для проверки, что assert()
состояние действительно ударил.