【时时三省】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)

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

相关推荐
仙魁XAN4 小时前
Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】
unity·设计模式·工厂方法模式·抽象工厂模式
我要吐泡泡了哦5 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
躺下睡觉~14 小时前
Unity-Transform类-父子关系
java·unity·游戏引擎
躺下睡觉~14 小时前
Unity-Transform类-缩放和看向
unity·游戏引擎
君莫愁。16 小时前
【Unity】检测鼠标点击位置是否有2D对象
unity·c#·游戏引擎
咩咩觉主17 小时前
Unity实战案例全解析:PVZ 植物卡片状态分析
unity·c#·游戏引擎
蓝裕安20 小时前
伪工厂模式制造敌人
开发语言·unity·游戏引擎
谢泽浩1 天前
Unity 给模型贴上照片
unity·游戏引擎
z2014z1 天前
Unity Resource System 优化笔记
unity·游戏引擎
王维志1 天前
Unity 高亮插件HighlightPlus介绍
unity·游戏引擎