【时时三省】unity test 测试框架 介绍(适用于C语言进行测试的)

山不在高,有仙则名。水不在深,有龙则灵。

----CSDN 时时三省

目录

[1,关于 unity test 测试框架的介绍](#1,关于 unity test 测试框架的介绍)

2,测试框架关于源码的介绍

[3,使用unity test测试C代码](#3,使用unity test测试C代码)

4,常用断言举例


1,关于 unity test 测试框架的介绍

unity test 是 ThrowTheSwitch.org 的一个主要工程。它是专注于为嵌入式工具链而生的C语言单元测试框架。它可以适用于大工程或者小工程都可以。它的核心文件是一个.c文件和两个头文件。

备注:

下载源码地址:

GitHub - ThrowTheSwitch/Unity: Simple Unit Testing for C

也可以直接下载源码:https://download.csdn.net/download/2301_81226734/89612039?spm=1001.2014.3001.5503

这个移植的核心文件为 unity.c :

https://download.csdn.net/download/2301_81226734/89611242

这个移植的核心文件为 unity.c unity_fixture.c

https://download.csdn.net/download/2301_81226734/89613716

2,测试框架关于源码的介绍

可以把unity test的测试框架分为四类文件:

  1. Unity Test 框架核心文件
  2. 被测试函数
  3. 测试用例
  4. main

在unity test 的源码中,目录结构如下图所示:

auto 目录:

有一些可以简化测试工作流程的脚本。其实对于unity test 不是必须的。

docs 目录:

关于unity test 如何使用的文档,帮助测试人员迅速上手。

这个目录下的这个 《UnityGettingStartedGuide.md》这个文件,是关于测试框架的关于目录,如何使用测试框架的简单介绍。全英文记述。

examples 目录:

有四种使用 unity test 的例子,分别是四个目录。

extras 目录:

提供一些可以添加进 unity test 的非核心文件的组件服务。

src 目录:

一个.c 两个.h 文件,就是 unity test。

test 目录:

这是关于 unity test 如何被测试的。

3,使用unity test测试C代码

cs 复制代码
#include "unity.h"
#include "file_to_test.h"

void setUp(void) {
    // set stuff up here
}

void tearDown(void) {
    // clean stuff up here
}

void test_function_should_doBlahAndBlah(void) {
    //test stuff
}

void test_function_should_doAlsoDoBlah(void) {
    //more test stuff
}

// not needed when using generate_test_runner.rb
int main(void) {
    UNITY_BEGIN();
    RUN_TEST(test_function_should_doBlahAndBlah);
    RUN_TEST(test_function_should_doAlsoDoBlah);
    return UNITY_END();
}

如上代码,是使用 unity test 测试C代码的一个简单应用。

首先需要包含两个头文件。第一个头文件为 unity.h,第二个为被测代码的 头文件。

其次,定义 setUp(), tearDown() 函数的内容。第一个函数的内容,会在RUN_TEST()用例开始前运行;第二个函数的内容,会在RUN_TEST()用例结束后运行。可以根据需要定义。可以是空函数。这个是由 unity test 测试框架实现的。 setUp(), tearDown() 这两个函数的名字不可以更改,不需要在用例开始前后调用,自动执行。

然后,定义了两个测试函数 test_function_should_doBlahAndBlah(), test_function_should_doAlsoDoBlah()。通常以test_开头,便于区分是测试函数。函数体内部编写需要测试的内容。

最后,编写 main() 函数体的内容。在用例开始前,先调用 UNITY_BEGIN() 宏函数,为测试环境初始化变量。接着,使用 RUN_TEST 宏调用测试函数test_function_should_doBlahAndBlah()和test_function_should_doAlsoDoBlah()。最后调用 UNITY_END() 宏函数,对测试环境进行清理,并梳理测试用例结果。

备注:

上面代码中的宏名,则是由 unity test测试框架定义好的,在第一次使用此框架对代码进行测试时,先按照此模板进行测试。

4,常用断言举例

unity test 测试框架中,断言非常多,断言的作用就在于判断数值的正确性。如果不符合预期,则此用例失败,会打印失败信息。接着执行下一个用例。这里只举例几个:

TEST_ASSERT_TRUE(condition)

判断 condition 是否为 TRUE

TEST_ASSERT_EQUAL(expected, actual)

判断 expected 和 actual是否一致。一致成功,不一致打印失败信息,此用例结束,继续执行下个用例。

TEST_ASSERT_EQUAL_STRING(expected, actual)

判断两个字符串是否一致

TEST_ASSERT_NULL(pointer)

判断指针是否为空

TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)

判断两块内存是否相等。可以为指针,也可以为数组。

相关推荐
虾球xz7 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
red_redemption11 小时前
自由学习记录(23)
学习·unity·lua·ab包
/**书香门第*/15 小时前
Cocos creator 3.8 支持的动画 7
学习·游戏·游戏引擎·游戏程序·cocos2d
向宇it1 天前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
Heaphaestus,RC1 天前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
芋芋qwq1 天前
Unity UI射线检测 道具拖拽
ui·unity·游戏引擎
tealcwu1 天前
【Unity服务】关于Unity LevelPlay的基本情况
unity·游戏引擎
大眼睛姑娘1 天前
Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
unity·游戏美术
鹿野素材屋2 天前
Unity Dots下的动画合批工具:GPU ECS Animation Baker
unity·游戏引擎
小春熙子2 天前
Unity图形学之着色器之间传递参数
unity·游戏引擎·技术美术·着色器