Главная
Новости
Статьи
Строительство
Ремонт
Дизайн и интерьер
Строительная теплофизика
Прочность сплавов
Основания и фундаменты
Осадочные породы
Прочность дорог
Минералогия глин
Краны башенные
Справочник токаря
Цементный бетон




26.06.2022


26.06.2022


25.06.2022


24.06.2022


21.06.2022


17.06.2022


17.06.2022





Яндекс.Метрика

Check (библиотека модульного тестирования)

28.02.2022


Check — библиотека модульного тестирования в стиле xUnit для программ, написанных на языке Си. Распространяется с открытыми исходными тестами под свободной лицензией. Основной философией проекта является покрытие всех возможностей системы тестирования модульными тестами. Поддерживает запуск тестов в отдельных процессах (через системный вызов fork() в ОС Linux) для возможности определения некорректного завершения тестов (например, по ошибке сегментирования).

Пример программы тестирования

Для того, чтобы написать программу тестирования, необходимо подключить заголовочный файл библиотеки check.h, написать функции тестирования, распределить их по группам, а группы распределить по тестовым наборам. После проведения тестирования можно получить количество тестов, которые оказались неудачными.

#include <stdlib.h> // Подключаем заголовочный файл библиотеки. #include <check.h> // Функция тестирования какой-либо задачи. START_TEST(test_name) { /* Исходный код теста. */ } END_TEST // Функция создания набора тестов. Suite *example_suite_create(void) { Suite *suite = suite_create("Example"); // Набор разбивается на группы тестов, разделённых по каким-либо критериям. TCase *tcase_core = tcase_create("Core of example"); // Добавление теста в группу тестов. tcase_add_test(tcase_core, test_name); // Добавление теста в тестовый набор. suite_add_tcase(suite, tcase_core); return suite; } int main(void) { Suite *suite = example_suite_create(); SRunner *suite_runner = srunner_create(suite); srunner_run_all(suite_runner, CK_NORMAL); // Получаем количество проваленных тестов. failed_count = srunner_ntests_failed(suite_runner); srunner_free(suite_runner); if (failed_count != 0) { // Сигнализируем о том, что тестирование прошло неудачно. return EXIT_FAILURE; } return EXIT_SUCCESS; }
Имя:*
E-Mail:
Комментарий: