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

发布于:2025-07-04 ⋅ 阅读:(21) ⋅ 点赞:(0)

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,则失败


网站公告

今日签到

点亮在社区的每一天
去签到