gpt4 book ai didi

c - 如何使用 autotools 正确设置 GLib 测试框架

转载 作者:太空狗 更新时间:2023-10-29 14:51:51 27 4
gpt4 key购买 nike

如何使用 autotools 正确设置 GLib 测试套件?我的项目已经使用了 GLib。设置测试套件必须做哪些最少的修改?是否包含一些 m4 文件?那么如何启动测试呢?

谢谢

最佳答案

从 GLib 2.38 开始,将 GLib 测试套件与 autotools 构建系统集成的推荐方法是依赖 autotools 本身内部的 TAP(测试任何协议(protocol))驱动程序。在 2.38 之前,测试套件基于特定品牌的 nastiness,具有一组自定义的 make 规则,以及运行和合并结果的 python 脚本。它仍然可以使用它,并且下面的大部分内容都适用,但我的建议是使用 TAP 驱动程序支持,因为从现在开始将支持它。

GLib 提供了这三个文件:

这些文件需要从 GLib 存储库复制到您自己的存储库中,因为它们仍然比较新——但将来它们将安装在与 GLib 相同的 $prefix 中,因此项目将能够依赖它们的存在,就像它们已经为内省(introspection)生成宏所做的那样。

我假设您的 configure.ac 有这两个指令来设置宏和辅助目录:

AC_CONFIG_MACRO_DIR([build])

所以你必须将 glibtests.m4 放在你的 $top_srcdir/build 目录中; glib-tap.mk 文件可以在 $top_srcdir 中,尽管我更喜欢将与 autotools 相关的所有内容放在同一目录中;最后,tap-test 启动器需要位于 $top_srcdir 中,尽管您可以通过修改 中的 LOG_COMPILER 变量来更改其位置>glib-tap.mk.

您需要在 configure.ac 中添加一个 GLIB_TESTS 指令。该指令将添加 configure 选项以启用安装测试,以及一个选项以在构建项目的其余部分时始终构建测试套件,而不是仅在运行 时构建它进行检查。这两个选项的默认设置都是禁用的。

我还假设您的测试套件将位于 $top_srcdir/tests 下,因此在 $top_srcdir/tests/Makefile.am 中您需要包含具有正确路径的 glib-tap.mk:

include $(top_srcdir)/build/glib-tap.mk

然后您将需要使用 glib-tap.mk 中定义的变量来添加测试二进制文件和数据。例如,如果您有以下测试单元文件:

foo.c
bar.c
baz.c
blah.c

分布式压缩包附带的一些测试数据:

foo.data.txt
bar.data.txt

和一些自动生成的数据,它应该在您每次构建测试套件时重建:

blah.data.txt

您需要声明:

# test binaries
test_programs = \
foo \
bar \
baz \
blah

# data distributed in the tarball
dist_test_data = \
foo.data.txt \
bar.data.txt

# data not distributed in the tarball
test_data = \
blah.data.txt

就是这样。现在,每次您在构建中运行 make check 时,都会构建并执行测试套件,您会得到一份包含通过和失败测试单元的报告。

如果您没有或不能依赖最新版本的 GLib,那么您将不使用 glib-tap.mktap-test需要将 glib.mk 复制到您的项目中,并以与上述相同的方式包含它。规则完全相同,因此您无需更改它们。在这种情况下,测试套件中的每个单元都将使用 GLib 在系统位置安装的 gtester Python 脚本运行。

最后,如果您想了解 GLib 测试系统如何与(小型)库集成的示例,可以查看 JSON-GLib:https://git.gnome.org/browse/json-glib/

关于c - 如何使用 autotools 正确设置 GLib 测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19958861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com