如何用Unity/Ceedling自动化测试多构建配置场景
在Ceedling中自动化测试多宏定义场景的方案
Ceedling支持通过**多构建目标(Build Targets)**实现不同宏配置下的自动化测试,无需手动反复修改配置。具体步骤如下:
1. 修改project.yml配置多构建目标
在项目的project.yml中定义两个独立的构建目标,分别对应宏开启和关闭的场景:
:project: :build_root: build :release_build: FALSE :targets: # 默认目标(可选) :default: :defines: [] # 宏MACRO_DEFINED开启的构建目标 :macro_enabled: :defines: - MACRO_DEFINED # 宏MACRO_DEFINED关闭的构建目标 :macro_disabled: :defines: []
2. 给测试函数分组
在测试文件中,将两个测试用例分到不同的测试组,方便与构建目标关联:
#include "unity.h" #include "your_source_file.h" // 替换为你的源文件头 // 宏开启场景的测试组 TEST_GROUP(MacroEnabled); TEST_SETUP(MacroEnabled) {} TEST_TEAR_DOWN(MacroEnabled) {} TEST(MacroEnabled, function_returns_input) { int result = function(1); TEST_ASSERT_MESSAGE(result == 1, "Result should be 1"); } // 宏关闭场景的测试组 TEST_GROUP(MacroDisabled); TEST_SETUP(MacroDisabled) {} TEST_TEAR_DOWN(MacroDisabled) {} TEST(MacroDisabled, function_returns_negated_input) { int result = function(1); TEST_ASSERT_MESSAGE(result == -1, "Result should be -1"); }
3. 关联构建目标与测试组(可选)
如果希望每个构建目标仅运行对应场景的测试用例,可在project.yml的目标配置中添加测试过滤规则:
:targets: :macro_enabled: :defines: - MACRO_DEFINED :tests: - test_your_file.c::MacroEnabled # 仅运行MacroEnabled组的测试 :macro_disabled: :defines: [] :tests: - test_your_file.c::MacroDisabled # 仅运行MacroDisabled组的测试
4. 执行自动化测试
- 运行单个场景的测试:
ceedling test:macro_enabled ceedling test:macro_disabled - 一次性运行所有场景的测试:
ceedling test:all
关键说明
测试文件中直接定义的宏只会影响测试代码本身,无法作用于被测试的源文件——因为Ceedling会单独编译源文件和测试文件,源文件的编译选项完全由project.yml中的构建目标配置控制,这也是之前手动修改配置才有效的核心原因。
内容的提问来源于stack exchange,提问作者vbchaos
相关产品推荐
相关产品推荐

