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

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

相关推荐
B0URNE8 小时前
【Unity基础详解】Unity3D全程学习路线
学习·unity·游戏引擎
一步一个foot-print12 小时前
[Unity Shader Base] RayMarching in Cloud Rendering
unity·游戏引擎
ithinking11012 小时前
kotlin 集成 unity
unity·android studio
立刀人17 小时前
关于Unity 轴心点 Pivot、锚点 Anchor和控制轴
unity·游戏引擎
Hody911 天前
【XR开发系列】Unity第一印象:编辑器界面功能布局介绍(六大功能区域介绍)
unity·编辑器·xr
lrh30252 天前
Custom SRP - 14 Multiple Cameras
unity·渲染管线·srp
AA陈超2 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-11 实现自动运行
c++·游戏·ue5·游戏引擎·虚幻
Hody913 天前
【XR开发系列】Unity下载与安装详细教程(UnityHub、Unity)
unity·游戏引擎·xr
程序员正茂3 天前
在Unity3d中使用Netly开启TCP服务
unity·tcp·netly
Little丶Seven3 天前
使用adb获取安卓模拟器日志
android·unity·adb·个人开发