前言
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