You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:43:10