1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhuangbo-MiniUnit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:06 0622103

MiniUnit — небольшой фреймворк для модульного тестирования на C/C++

README: English | 中文

Этот проект вдохновлён MinUnit. MinUnit — это минималистичный фреймворк для модульных тестов на языке C, который состоит всего из трёх строк кода и имеет ограниченные возможности.

MiniUnit предлагает более гибкие утверждения (assertion), чем MinUnit, и отображает результаты тестов в более читаемом виде, включая информацию о месте ошибки утверждения (имя файла и номер строки), а также использует цветной текст для отображения информации об ошибке утверждения (см. рисунок).

Особенности MiniUnit:

  • Простота: утверждения, тесты и отображение результатов без дополнительного кода.
  • Гибкость: гибкие утверждения с опциональными сообщениями и поддержкой переменных параметров.
  • Ясность: отображение места ошибки утверждения (имя файла и номер строки) и поддержка цветного текста.
  • Компактность: только один заголовочный файл и около 120 строк кода.

Функции

(1) Использование утверждений

Тест может содержать несколько утверждений, и если любое из них не выполняется, тест считается неудачным.

  • mu_assert(expr): утверждение не выполняется при ложном значении выражения expr, и сообщается об ошибке. Например: mu_assert(a == 3);

  • mu_assert(expr, message): утверждение с сообщением, которое выводится при неудаче утверждения. Например: mu_assert(b == 5, "b is 5");

  • mu_assert(expr, message, args...): утверждение с сообщением и переменными параметрами args (до 16), которые используются как параметры в сообщении. Формат аналогичен printf. Например: mu_assert(a+b == 7, "the sum is %d", a+b);

(2) Написание тестов

Каждый тест представляет собой функцию без параметров, возвращающая значение типа int. Если функция возвращает 0, тест считается пройденным, иначе — неудачным. Пример:

int test_something()
{
  mu_assert(1 + 1 == 2);
  return 0; // 0 означает, что тест пройден
}

(3) Запуск тестов

  • mu_run_test(test): запускает тестовую функцию int test() и подсчитывает количество успешных и неудачных тестов.

(4) Просмотр результатов

  • mu_test_results(): показывает результаты тестов, включая количество успешных и неудачных.

(5) Цветной текст

Если консоль не поддерживает ANSI escape code, перед #include "miniunit.h" определите макрос #define MU_NOCOLOR (по умолчанию в Windows). Пример:

#define MU_NOCOLOR
#include "miniunit.h"

Пример

Например:

#include "miniunit.h"

int test_one()
{
  mu_assert(2 + 2 == 4);
  return 0; // 0 means test passed
}

int test_two()
{
  int a = 3, b = 5;
  mu_assert(a == 3);
  mu_assert(b == 5, "b is 5");
  mu_assert(a + b == 7, "should be %d", a + b); // fail
  return 0;
}

int main()
{
  mu_run_test(test_one);
  mu_run_test(test_two);

  mu_test_results();

  return 0;
}

Результат:

test_one ./mu_example.c:21 ... ✔
test_two ./mu_example.c:22 ... ✘
___________________________________
1 ✔ и 1 ✘ в 2 тестах

1 тест(ы) не пройден(ы)

После отключения цветного текста вывод будет выглядеть так:

|- test_one ./mu_example.c:21 ... ✔
|- test_two ./mu_example.c:22 ... ✘
|\_[FAIL] at ./mu_example.c:15 for 'a + b == 7' ✘ should be 8
\_________________________________
1 ✔ and 1 ✘ in 2 TEST(S)
#### 1 TEST(S) FAILED ####

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhuangbo-MiniUnit.git
git@api.gitlife.ru:oschina-mirror/zhuangbo-MiniUnit.git
oschina-mirror
zhuangbo-MiniUnit
zhuangbo-MiniUnit
master