代码拉取完成,页面将自动刷新
本项目是受到 MinUnit 的启发而创建的。MinUnit 是一个极简的 C 语言单元测试框架,仅有三行代码,因此其功能亦比较受限。
与此相比,在同样保持简单的条件下,MiniUnit 提供更灵活的断言 (assertion),并以可读性更好的方式展示测试结果,包括显示断言错误的位置(文件名和行号),用彩色文本显示断言错误信息等(如下图)。
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 ... ✘
|\_[FAIL] at ./mu_example.c:15 for 'a + b == 7' ✘ should be 8
\_________________________________
1 ✔ and 1 ✘ in 2 TEST(S)
#### 1 TEST(S) FAILED ####
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型