Этот проект вдохновлён MinUnit. MinUnit — это минималистичный фреймворк для модульных тестов на языке C, который состоит всего из трёх строк кода и имеет ограниченные возможности.
MiniUnit предлагает более гибкие утверждения (assertion), чем MinUnit, и отображает результаты тестов в более читаемом виде, включая информацию о месте ошибки утверждения (имя файла и номер строки), а также использует цветной текст для отображения информации об ошибке утверждения (см. рисунок).
Особенности MiniUnit:
Тест может содержать несколько утверждений, и если любое из них не выполняется, тест считается неудачным.
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);
Каждый тест представляет собой функцию без параметров, возвращающая значение типа int
. Если функция возвращает 0
, тест считается пройденным, иначе — неудачным. Пример:
int test_something()
{
mu_assert(1 + 1 == 2);
return 0; // 0 означает, что тест пройден
}
mu_run_test(test)
: запускает тестовую функцию int test()
и подсчитывает количество успешных и неудачных тестов.mu_test_results()
: показывает результаты тестов, включая количество успешных и неудачных.Если консоль не поддерживает 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 тестах |
После отключения цветного текста вывод будет выглядеть так:
|- 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 )