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

Check
Тип Инструмент модульного тестирования
Написана на Си
Операционные системы Linux, macOS, Windows
Последняя версия 0.15.2 (7 августа 2020)
Репозиторий github.com/libcheck/check
Состояние активное
Лицензия 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 года.

Ссылки

  • Руководство по использованию библиотеки Check (англ.)