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的例程.

相关推荐
zxc2446039347 分钟前
gpu instancer crowd 动画使用方式
unity
C MIKE2 小时前
unity资源下载
unity
Avalon7122 小时前
Unity中自定义协程的实现
游戏·unity·c#·游戏引擎
IMPYLH2 小时前
Lua 的 select 函数
java·开发语言·笔记·后端·junit·游戏引擎·lua
jtymyxmz3 小时前
《Unity shader》10.1.5 菲涅尔反射
unity·游戏引擎
老朱佩琪!4 小时前
Unity文字排版错位问题
经验分享·unity·游戏引擎
jtymyxmz4 小时前
《Unity Shader》9.4.3 使用帧调试器查看阴影绘制过程
unity·游戏引擎
jtymyxmz4 小时前
《Unity Shader》10.3.1 在Unity中实现简单的程序纹理
unity·游戏引擎
jtymyxmz4 小时前
《Unity Shader》11.2.1 序列帧动画
unity·游戏引擎
qq_4286396112 小时前
虚幻基础:虚幻中的if与switch
游戏引擎·虚幻