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

20.国产构建工具之王xmake——单元测试(test)

目录

一、引言

二、正文

1. xmake中如何在目标中加入单元测试

2. xmake test的参数和作用

3. 补充知识——单元测试的意义和常用框架

(1)单元测试的核心意义

(2)xmake支持的常用单元测试框架

三、结语


写在前面

所有内容首发都将在公众号【飞翔的SA】,也请大家移步公众号阅读,您的支持是我坚持的动力。

原创不易,每一篇文章都是花费大量的时间编写而成,都是干货满满!如果各位觉得对自己有帮助,请动动您发财的小手,关注本账号, 我将持续为大家带来优质内容!


一、引言

在软件开发的全流程中,单元测试是保障代码质量、降低迭代风险的关键环节,也是自动化测试和CI/CD流水线的基础。而xmake作为轻量高效的跨平台构建工具,内置了完善的单元测试支持,无需额外集成复杂插件,就能快速实现测试用例的配置、运行与结果分析。

本文将从xmake单元测试的实际配置出发,详细讲解测试用例的添加、测试命令的使用,同时说明单元测试的核心意义与常用框架集成方法,帮助大家快速上手xmake自动化测试。

文中使用的软件及版本:xmake3.0.7请预先安装!

二、正文

1. xmake中如何在目标中加入单元测试

在xmake中配置单元测试的核心目标是为target绑定测试用例,API为add_tests,同时搭配set_default等API实现目标的编译控制,所有配置均在xmake.lua中完成,支持对可执行程序、静态库、动态库等添加测试用例。

语法

  target("targetName")         add_tests("default",{ runargs = {"arg1", "argr2"}})

以下是所有相关API的详细用法,包含参数、作用及使用示例。

API名称

函数原型/核心参数

作用说明

add_testsadd_tests(testname, {参数键值对})

为当前目标添加指定名称的测试用例,支持配置测试运行参数、预期输出、超时时间等,是xmake单元测试的核心API,
参数:runargs/runenvs/timeout/trim_output/pass_outputs/fail_outputs/build_should_pass/build_should_fail/files/defines/realtime_output

set_defaultset_default(boolean)

设置目标是否为默认构建目标,测试目标建议设为false,避免普通构建时编译测试代码,xmake执行test命令时会自动编译该目标

set_groupset_group(groupname)

设置目标分组, 当没有设置 group 参数给 add_tests,也可以默认获取绑定到 target 的组名

add_runenvsadd_runenvs(name,values)

添加运行环境变量,与 add_tests的runenvs参数功能一致,
add_runenvs("PATH", "/tmp/bin", "xxx/bin")        

set_policy

set_policy(policy, value)

设置构建行为策略

set_policy("test.stop_on_first_failure", true)  首次测试失败就终止

set_policy("test.return_zero_on_failure", true):返回0为失败

add_tests 参数说明

参数名

作用说明

使用示例

runargs

配置测试用例运行时传递的命令行参数,支持多参数列表

add_tests("test1", {runargs = {"--mode=test", "data.txt"}})
runenvs

设置测试用例运行时的环境变量,键值对形式配置

add_tests("test2", {runenvs = {TEST_ENV = "dev", DEBUG = "1"}})
timeout

设置测试用例的超时时间(单位:秒),超时则判定测试失败

add_tests("test3", {timeout = 10})
trim_output

是否修剪测试输出内容的首尾空白字符(true/false),常配合输出校验使用

add_tests("test4", {trim_output = true, pass_outputs = "success"})
pass_out
http://www.jsqmd.com/news/477424/

相关文章:

  • 您的镜头您做主:特写、半身、全身,想要哪种随心选!
  • 分享2026年重庆诚信的软装搭配设计公司,选哪家更合适 - mypinpai
  • 探索三电平 T 型变换器双闭环 PI 控制 - 调制在 60 度坐标系的实现
  • 线程控制--1
  • 专才换工作的必须提交转换雇主申请--否则成为黑工
  • 2026 联网声光报警器 优秀品牌推荐榜 智联联动 安全守护
  • 【论文解读】MAML:模型无关的元学习框架
  • 可逆跳跃马尔可夫链蒙特卡罗采样(RJMCMC)算法实现
  • 香港科技大学广州|智能制造理学硕士学位项目26Fall招生宣讲会—线上专场
  • 基于MATLAB Simulink的12脉波LCC-HVDC常规高压直流输电系统仿真建模与短路...
  • FPC叠层设计:阻抗匹配为何是信号完整性第一道生命线
  • 解析汽车车架号VIN码
  • 【linux内核】pin_user_pages原理
  • SpringMVC介绍
  • PUA OpenClaw:147只龙虾亲测有效!
  • 实习面经摘录(六)
  • /Users/yan/Downloads/boris_ImplicitDiffusion_1D_AD.jl
  • Compound 5| Compound的技术架构
  • AI提示词注入
  • Gemini PT-2D
  • 库早报|OPPO:无感折痕屏背后有两项3D打印技术;威拉里三期项目开工;五轴3D打印机TOP.E R1将亮相TCT亚洲展
  • 性价比高的铝方通哪个靠谱
  • 基于电压电流双闭环和模糊PID双环的VIENNA整流器仿真研究
  • 2026年,宁夏装修公司推荐哪家?业主实测top3家正规机构,装修小白不踩坑,附避坑指南! - 宁夏壹山网络
  • 电力弹簧主动配电网规划及优化运行调度策略探讨
  • 2026养发加盟项目怎么选?新手创业实用指南 - 品牌排行榜
  • 2026年七大闷声赚钱的AI技能
  • Deep Seek总结的APSW 和 SQLite 的关系
  • 部分视图 PartialView的详细介绍与经典用法
  • 一次性说清楚restTemplate如何使用1