cmocka бесплатная операция и отлов исключений

Я начал свое приключение с библиотеки cmocka, и у меня есть два вопроса.

  1. Можно ли узнать, правильно ли была выполнена операция free()? Я имею в виду, я хотел бы проверить функцию, которая очищает древовидную структуру. Я читал о test_free(), но, честно говоря, я не понимаю, что стоит за этим.

  2. Второе - это случай обнаружения стандартных библиотечных исключений. Я знаю о функции 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() состояние действительно ударил.

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