当前位置: 首页 > news >正文

Unity单元测试框架在keil环境下的移植教程

Unity单元测试框架是一款在软件开发中广泛使用的工具,它为开发者提供了一种有效的方式来确保代码的质量和可靠性。

该框架具有以下几个显著特点:首先,它提供了丰富的断言方法,使开发者能够轻松地验证代码的预期行为。例如,可以断言某个方法的返回值是否符合预期,或者某个对象的状态是否正确。其次,Unity单元测试框架支持测试用例的组织和管理,方便开发者对不同功能模块的代码进行独立测试。再者,它具有良好的可扩展性,开发者可以根据项目的具体需求自定义测试夹具和测试运行器等。

通过使用Unity单元测试框架,开发者能够在开发过程中及时发现和修复代码中的缺陷,提高代码的可维护性和可扩展性,从而提升整个项目的质量和稳定性,减少后期维护的成本和风险。

一、移植教程

1.准备工作

下载Unity源码:https://github.com/ThrowTheSwitch/Unity

以GD32M53x为例准备好工程代码,并在工程目录下创建Unity文件夹。

将Unity源码中的unity.c、unity.h、unity_config.h、unity_internals.h复制到工程创建的Unity文件夹中。

2.打开工程进行工程配置

在project中建立Unity组,并添加unity.c

在头文件路径中添加Unity文件路径,将.h文件包括进去,并且在C文件中添加#include "unity.h"

3.添加setUp、tearDown函数的定义,在测试内容前后添加UNITY_BEGIN和UNITY_END

一个测试文件将包含一个setUp()以及tearDown()函数。setUp函数可以包含任何想要在每个测试之前运行的内容。tearDown函数可以包含任何想要在每个测试之后运行的内容。 两个函数都不接受任何输入参数,也不返回参数。

二、常用断言

TEST_ASSERT_TRUE(condition)计算任何处于条件下的代码,如果计算结果为false,则失败

TEST_ASSERT_FALSE(condition)对任何处于条件下的代码求值,如果求值为true,则失败

TEST_ASSERT(condition)另一种调用TEST_ASSERT_TRUE的方法

TEST_ASSERT_UNLESS(condition)另一种调用TEST_ASSERT_FALSE的方法

TEST_FAIL() TEST_FAIL_MESSAGE(message)这个测试被自动标记为失败。消息输出说明了原因。

TEST_ASSERT_EQUAL_INT(expected, actual)

TEST_ASSERT_EQUAL_INT8(expected, actual)

TEST_ASSERT_EQUAL_INT16(expected, actual)

TEST_ASSERT_EQUAL_INT32(expected, actual)

TEST_ASSERT_EQUAL_INT64(expected, actual)

比较两个整数是否相等,并将错误显示为带符号的整数。

TEST_ASSERT_EQUAL_UINT(expected, actual)

TEST_ASSERT_EQUAL_UINT8(expected, actual)

TEST_ASSERT_EQUAL_UINT16(expected, actual)

TEST_ASSERT_EQUAL_UINT32(expected, actual)

TEST_ASSERT_EQUAL_UINT64(expected, actual)

比较两个整数是否相等,并将错误显示为无符号整数。

TEST_ASSERT_EQUAL_HEX(expected, actual)

TEST_ASSERT_EQUAL_HEX8(expected, actual)

TEST_ASSERT_EQUAL_HEX16(expected, actual)

TEST_ASSERT_EQUAL_HEX32(expected, actual)

TEST_ASSERT_EQUAL_HEX64(expected, actual)

比较两个整数是否相等,并将错误显示为十六进制。

TEST_ASSERT_EQUAL(expected, actual)另一种调用TEST_ASSERT_EQUAL_INT的方法

TEST_ASSERT_INT_WITHIN(delta, expected, actual)断言实际值在期望值的正负之间。

TEST_ASSERT_GREATER_THAN(threshold, actual)断言实际值大于阈值。

TEST_ASSERT_LESS_THAN(threshold, actual)断言实际值小于阈值。

TEST_ASSERT_BITS(mask, expected, actual)使用一个整数掩码来指定两个其他整数之间应该比较哪些位。比较掩码中的高比特,忽略低比特。

TEST_ASSERT_BITS_HIGH(mask, actual)使用整数掩码指定应该检查哪些位以确定它们是否都设置为高。比较掩码中的高比特,忽略低比特。

TEST_ASSERT_BITS_LOW(mask, actual)使用一个整数掩码来指定应该检查哪些位以确定它们是否都设置得很低。比较掩码中的高比特,忽略低比特。

TEST_ASSERT_BIT_HIGH(bit, actual)测试单个位,并验证它是否高。为32位整数指定0-31位。TEST_ASSERT_BIT_LOW(bit, actual)测试一个比特并确认它是低的。为32位整数指定0-31位。

TEST_ASSERT_EQUAL_STRING(expected, actual)比较两个空终止字符串。如果任何字符不同或长度不同,则失败。

TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)比较两个字符串。如果任何字符不同,则在len字符后停止比较。

TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)比较两个空终止字符串。如果任何字符不同或长度不同,则失败。失败时输出自定义消息。

TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message)比较两个字符串。如果任何字符不同,则在len字符后停止比较。失败时输出自定义消息。

TEST_ASSERT_NULL(pointer) 如果指针不等于NULL,则失败

TEST_ASSERT_NOT_NULL(pointer) 如果指针等于NULL,则失败

http://www.lryc.cn/news/579631.html

相关文章:

  • Unity3D 文件夹注释工具
  • CTF Web的数组巧用
  • 互联网大厂Java面试实录:Spring Boot与微服务在电商场景中的应用
  • STM32-第二节-GPIO输入(按键,传感器)
  • Linux基本指令(下)
  • 建设工程停工损失从哪些方面取证,如何取证?
  • 经典灰狼算法+编码器+双向长短期记忆神经网络,GWO-Transformer-BiLSTM多变量回归预测,作者:机器学习之心!
  • 在鸿蒙(HarmonyOS)中安装 .app 格式的应用包(即 HAP 或 APP 文件),可以通过以下方法实现
  • 服务器如何配置SSH密钥登录提高安全性?
  • 基于Anything LLM的本地知识库系统远程访问实现路径
  • vue2+elementui使用compressorjs压缩上传的图片
  • 机器人“触摸”水果成熟度突破:SwishFormer模型与DIGIT视触觉传感器在HelloRobot上的水果检测应用
  • 从0到1解锁Element-Plus组件二次封装El-Dialog动态调用
  • Unity-Shader-几何着色器
  • 学习设计模式《十六》——策略模式
  • Linux 73 LAMP4
  • 离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
  • 从0开始学习R语言--Day37--CMH检验
  • VR 果蔬运输开启农业物流新变革
  • AI无标记动捕如何结合VR大空间技术打造沉浸式游戏体验
  • 从0到1实战!用Docker部署Qwerty Learner输入法的完整实践过程
  • https如何利用工具ssl证书;使用自己生成的证书
  • 创建 TransactionStatus
  • rabbitmq 与 Erlang 的版本对照表 win10 安装方法
  • Debian-10-standard用`networking`服务的`/etc/network/interfaces`配置文件设置多网卡多IPv6
  • 贝叶斯深度学习:赋予AI不确定性感知的认知革命
  • 日本IT|日本做后端开发需要具备什么技能开发经验?
  • 深入理解CSS中的BFC 与IFC , 布局的两大基础概念
  • Day50 预训练模型+CBAM模块
  • 【Python】图像识别的常用功能函数