Unity单元测试

Unity单元测试是一个专门用于嵌入式单元测试的库, 现在简单讲下移植以及代码结构.

源码地址: GitHub - ThrowTheSwitch/Unity: Simple Unit Testing for C

1.我们只需要移植三个文件即可: unity.c, unity.h, unity_internals.h

2.然后添加需要测试的函数.

3.在main.c中添加两个空函数以及一个宏

cpp 复制代码
/* 这两个空函数需要定义, 否则编译不过 */
void setUp()
{
}
void tearDown()
{
}

/* 运行测试, 源码已经定义好了 */
#define RUN_TEST(TestFunc, TestLineNum) \
{ \
  Unity.CurrentTestName = #TestFunc; \
  Unity.CurrentTestLineNumber = TestLineNum; \
  Unity.NumberOfTests++; \
  if (TEST_PROTECT()) \
  { \
      setUp(); \
      TestFunc(); \
  } \
  if (TEST_PROTECT()) \
  { \
    tearDown(); \
  } \
  UnityConcludeTest(); \
}

废话就不多说了, 我直接把我的工程放上来:

https://download.csdn.net/download/qq_38591801/88856781

我这个demo是用mingw在window环境下编译的, 大家也可以使用visual studio移植, 这样就不用管makefile文件了, 但是使用visual studio真心的太笨重了, 运行也慢, 强烈建议大家使用vscode+gcc编译(在windows环境下用vscode配置gcc编译代码_windows vscode gcc-CSDN博客)

测试过程中, 如果一个函数测试未通过, 那么这一批里面的函数后面的函数是不会运行的

cpp 复制代码
#include "unity.h"
#include "test.h"

int demo()
{
    printf("this is you need to test function\n");
    return 1;
}
int demo1()
{
    printf("this is you need to test function\n");
    return 0;
}
void test_func(void)
{
    TEST_ASSERT_EQUAL(0, demo());//运行到错误后, 后面的函数就不会运行了
    TEST_ASSERT_EQUAL(0, demo1());
}
void test_func1(void)
{
    TEST_ASSERT_EQUAL(0, demo1());
}

更多详细的测试可以参考Unity的例程.

相关推荐
SmartRadio5 小时前
NRF52833 + MPU6050 室内定位跟随无人机
游戏引擎·无人机·cocos2d
心前阳光6 小时前
Unity之运行时标准材质半透明无效果
unity·游戏引擎·材质
张老师带你学8 小时前
Unity buildin 石头围墙 树木 树墩子 卡通风格 栅栏 小桥 低多边形
科技·游戏·unity·游戏引擎·模型
ChaITSimpleLove9 小时前
软件测试策略全面指南:从单元测试到混沌工程的多维度分析
渗透测试·单元测试·集成测试·压力测试·系统测试·test
呆呆敲代码的小Y12 小时前
【Unity工具篇】| 使用YooAsset接入自己的游戏项目,实现完整热更新流程
游戏·unity·游戏引擎·热更新·yooasset·资源热更新
张老师带你学12 小时前
Unity 低多边形 赛博朋克城市 拼装 模型 道路 建筑 buildin
科技·游戏·unity·游戏引擎·模型
PassionY12 小时前
Unity NGO 系列教程(四):多人抓取的权限争夺
unity·xr·network·ngo·multiplayer·ownership·多人竞态权
ฅ^•ﻌ•^ฅ112 小时前
Unity mcp并使用claude code制作游戏
游戏·unity·游戏引擎
程序员正茂12 小时前
Unity3d使用SRDebugger屏幕输出调试信息
unity·srdebugger
张老师带你学12 小时前
unity资源 buildin 低多边形 小镇村
科技·游戏·unity·游戏引擎·模型