gpt4 book ai didi

automated-tests - Automake:如何有效处理全局和局部 'make check'?

转载 作者:行者123 更新时间:2023-12-02 08:59:52 25 4
gpt4 key购买 nike

在一个较大的项目中,我设置了./tests/Makefile.am,以便在调用make check时运行许多测试。文件 global_wrapper.c 包含设置/故障代码,并调用在多个子目录中实现的测试函数。

TESTS = global_test

check_PROGRAMS = global_test

global_test_SOURCES = global_wrapper.c foo/foo_test.c bar/bar_test.c

效果很好。但测试需要很长时间,因此我希望能够选择仅从单个子目录执行测试。我一开始就是这样做的。

我添加了子目录:

SUBDIRS = foo bar

在子目录中,我添加了本地包装器和 Makefile.am 的:

TESTS = foo_test

check_PROGRAMS = foo_test

# the foo_test.c here is of course the same as in the global Makefile.am
foo_test_SOURCES = foo_wrapper.c foo_test.c

这也很有效 - 当我在子目录 foo 中调用 make check 时,仅执行 foo 测试。

但是,当我现在在 ./tests 中调用 make check 时,所有测试都会执行两次。一次通过global_test,一次通过本地测试程序。

如果我在全局 Makefile.am 中省略 SUBDIRS 语句,则子目录 makefile 不会被构建。如果我从本地 Makefile.am 中省略 TESTS,则 make check 不会对本地目录执行任何操作。

我对 automake 不太熟悉,但我很确定有某种方法可以解决这个困境。这里有人可以给我提示吗?

最佳答案

分解你的测试。在您的测试/Makefile.am 中执行以下操作:

TESTS = foo_test bar_test

并使用类似的内容适当构建 foo_test bar_test

foo_test_SOURCES = foo/foo_wrapper.c foo/foo_test.cbar_test_SOURCES = bar/bar_wrapper.c bar/bar_test.c

现在,如果您执行原始“make check”,则两个测试都将运行。如果您只想运行一项测试,则可以使用“make check TESTS=foo_test”或“make check TESTS=bar_test”来执行此操作,并且只会运行适当的测试。通常,Makefile.am 列出了 TESTS 中默认运行的所有测试,并且用户在 make-time 中选择备用测试。当然,如果您经常运行测试,则可以在 shell session 中“export TESTS=foo_test”,然后仅键入“make check”。

关于automated-tests - Automake:如何有效处理全局和局部 'make check'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140944/

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