[④Meson]: Unit Tests

前言

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]: Unit Tests_第1张图片
如果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

你可能感兴趣的:(学习)