[④Meson]: Unit Tests

本文详细介绍了如何在Meson构建系统中使用uni-tests进行单元测试,包括创建可执行程序、设置并行性、优先级,以及如何利用Valgrind和GDB进行调试。通过`run()`命令配置测试参数,方便进行测试和重复执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Meson构建系统支持uni-tests,使用run()命令可以非常方便进行uni-test测试。

Syntax

基本语法:

e = executable('prog', 'source.c')
test('name of test', e)

下面是创建两个可执行程序,并且将它们在test中使用的例子:

test0 = executable('test0', 'app0.c')
test1 = executable('test1', 'app1.c')

test('A', test0)
test('B', test1)

也可以在run()命令中定义arguments和environment variables:

test('command line test', exe, args : ['first', 'second'])
test('envvar test', exe2, env : ['key1=value1', 'key2=value2'])

编译完成后,在build目录中输入meson test,就可以进行uni-test测试,会有下面类似的输出:
在这里插入图片描述
如果Meson检测到错误代码error code或者例如main()中return -1,就会视为test失败:
在这里插入图片描述

Parallelism

为了节省时间,Meson uni-tests默认是并行执行的,但有时候一些测试不能同时执行,可以将并行关闭:

test('unique test', t, is_parallel : false)

Priorities

Meson可以对uni-tests设置执行的优先级,默认都为0,优先级数字高的优先执行:

test('started second', t, priority : 0)
test('started third', t, priority : -50)
test('started first', t, priority : 1000)

其他

Meson可以指定test进行测试,例如:

 meson test A

可以重复进行uni-tests测试,例如:

 meson test --repeat=10

在测试时,可以使用调用其他helper程序,例如用Valgrind工具:

meson test --wrap=valgrind testname

支持调用GDB:

$ meson test --gdb testname
### Meson命令未找到问题的解决方案 当遇到`meson: command not found`错误时,通常意味着系统无法识别或定位到Meson构建系统的可执行文件。这可能是由于多种原因造成的,包括但不限于环境变量路径设置不当、软件包未正确安装等。 #### 安装Meson 如果尚未安装Meson,则需要先完成其安装过程。对于不同操作系统而言,具体操作有所区别: - **Linux/Unix-like Systems** 可以利用包管理工具来简化这一流程。例如,在基于Debian的发行版中可以运行如下命令: ```bash sudo apt-get update && sudo apt-get install meson ``` - **macOS (Homebrew)** 使用Homebrew作为包管理器的情况下,可以通过下面这条指令快速获取最新版本的Meson: ```bash brew install meson ``` - **Windows (MSYS2/MINGW64)** 对于Windows平台下的类Unix环境来说,推荐采用Chocolatey或者通过MSYS2自带的Pacman来进行安装: ```bash pacman -S mingw-w64-x86_64-meson ``` 确保按照对应的操作系统指南成功安装之后再继续下一步骤验证是否解决问题[^1]。 #### 验证安装并添加至PATH 即使已经完成了上述步骤中的安装工作,仍需确认当前用户的shell能够访问新加入的应用程序。为此,应当检查全局或本地`.profile`, `.bashrc`, 或者其他启动脚本里是否有适当配置使得`$PATH`包含了Meson二进制所在目录的位置。如果没有的话,请手动将其添加进去;而对于某些特定情况(如Python虚拟环境中),则可能还需要额外指定确切路径给定解释器使用。 另外一种简便的方法就是直接调用完整的绝对路径名去执行该命令,以此绕过任何潜在的路径解析失败情形。假设已知Meson位于`/usr/local/bin/meson`处,则可以直接这样尝试: ```bash /usr/local/bin/meson setup my_project/ ``` 最后但同样重要的是重启终端会话或是重新加载Shell配置文件以便使更改生效。此时再次测试能否正常调用`meson`应该就不会再碰到类似的找不到命令的情况了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李71~李先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值