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

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
(перенаправлено с «Check»)
Check
Тип Инструмент модульного тестирования
Написана на Си
Операционная система Linux, macOS, Windows
Последняя версия 0.15.2 (7 августа 2020)
Состояние активное
Лицензия LGPLv3
Ссылки
Сайт libcheck.github.io/check/

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

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

Для того, чтобы написать программу тестирования, необходимо подключить заголовочный файл библиотеки 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;
}

См. также

Примечания

  1. Check 0.10.0: 3 Tutorial: Basic Unit Testing. libcheck.github.io. Дата обращения: 13 ноября 2016. Архивировано 19 мая 2016 года.

Ссылки