unity单元测试使用
unity 单元测试框架的使用
unity 官方文档提供了如下两种使用方式
方式一
int main(void)
{
UnityBegin("test/TestProductionCode.c");
RUN_TEST(test_Function1);
RUN_TEST(test_Function2);
RUN_TEST(test_Function3);
RUN_TEST(test_Function4);
RUN_TEST(test_Function5);
return (UnityEnd());
}
测试开始前使用UnityBegin(const char* filename)初始化,测试结束后调用UnityEnd()输出执行结果,返回用例失败的个数。中间用RUN_TEST(case_name)宏指定测试例。
方式二
// test.cpp
#include "unity.h"
#include "unity_fixture.h"
TEST_GROUP(module);
TEST_SETUP(module){
}
TEST_TEAR_DOWN(module){
}
TSET(module, case1){
}
TSET(module, case2){
}
TEST_GROUP_RUNNER(module){
RUN_TEST_CASE(module, case1);
RUN_TEST_CASE(module, case2);
}
//main.cpp
static void RunAllTests(void){
RUN_TEST_GROUP(module);
// RUN_TEST_GROUP(module_2);
// RUN_TEST_GROUP(module_3);
}
int main(){
return UnityMain(argc, argv, RunAllTests);
}
TEST_GROUP(xxx) // 测试套件声明,名称xxx可自定义
TEST_SETUP(xxx) // 每个测试例 测试前的启动代码,主要实现测试用例共用的资源准备工作,如无需要可空处理
TEST_TEAR_DOWN(xxx) // 每个测试例 测试后的清理代码,主要实现测试用例共用的资源清理工作,如无需要可空处理
TEST(xxx, yyy) // 每个测试例的主要实现代码,xxx为测试套件名,yyy为测试用例名,可自行定义。测试例可以有多个
TEST_GROUP_RUNNER(xxx) // 指定要运行的测试例,内部使用RUN_TEST_CASE(xxx, yyy)指定具体的测试例
每个测试套件用上面一组宏接口,便可以组织起整个测试。方式二比方式一更有优势,可以解耦各个测试例,将测试例按不同套件区分,同时可以指定测试用例执行前后的资源配置和回收操作。
unity提供了一系列的断言宏TEST_ASSERT_*,用来做结果校验,当测试例失败时,可以明确地提示并中断当前的测试用例。
// 条件相关的断言
TEST_ASSERT_TRUE(condition)
TEST_ASSERT_FALSE(condition)
TEST_ASSERT_NULL(pointer)
TEST_ASSERT_NOT_NULL(pointer)
...
// 值对比, 相等判断
TEST_ASSERT_EQUAL_INT(expected, actual)
TEST_ASSERT_EQUAL_UINT(expected, actual)
TEST_ASSERT_EQUAL_INT32(expected, actual)
TEST_ASSERT_EQUAL_UINT32(expected, actual)
...
// 值对比, 不等判断
TEST_ASSERT_NOT_EQUAL_INT(threshold, actual)
TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual)
TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual)
TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual)
...
// 值对比,大小判断
TEST_ASSERT_GREATER_THAN_INT32(threshold, actual)
TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual)
TEST_ASSERT_LESS_THAN_INT32(threshold, actual)
TEST_ASSERT_LESS_OR_EQUAL_INT32(threshold, actual)
...
参考资料
本文来自博客园,作者:流翎,转载请注明原文链接:https://www.cnblogs.com/hjx168/p/16951185.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人