Autotools:如何 运行 使用 make check 进行单个测试?

Autotools: How to run a single test using make check?

我目前正在从事一个使用 autotools 生成 makefile 的项目。像往常一样,这个 makefile 支持 make check 到 运行 整个测试套件。但是,我正在处理程序的一小部分,其中只有几个单元测试适用。是否可以使用 make check 来 运行 单个单元测试或单元测试的选择,而不是整个套件?

编辑: 这取决于目录结构,所以让我多解释一下目录结构。这个项目的目录结构非常扁平。大多数源文件都在 src/ 目录中,有些文件分组在 src/ 下的子目录中。单元测试在 src/tests 中。 None 个源目录包含 Makefile。顶层只有一个makefile(由configure生成)。

这个问题的答案取决于您使用的特定生成文件。如果测试有目录结构,您通常可以导航到子目录和子目录中的 运行 make check

由于您稍后解释说您的目录结构是扁平的,所以如果不实际看到一些 makefile 就很难说。如果您知道为您想要 运行 的特定测试创建的可执行文件的名称,您可以 运行 make name_of_test 构建您想要 [=21] 的测试=].这不会 运行 测试,它只会构建它。测试在构建后可能驻留在测试目录中。在此之后,您可以进入测试目录并以通常的方式 运行 测试 运行 一个可执行文件,但是如果测试依赖于库,您可能需要告诉测试在哪里可以找到这些库库,也许通过向 LD_LIBRARY_PATH.

添加一些库

如果这是您想经常做的事情,可以修改 makefile 以支持 运行您想要 运行 的特定测试。通常这会涉及编辑 Makefile.amMakefile.in 然后重新配置,但我还没有足够的信息来建议您需要进行哪些编辑。

如果您使用 Automake 的 TESTS 变量列出 make check 运行的测试,那么有一个简单的快捷方式:make check TESTS='name-of-test1 name-of-test2' TESTS 变量传递给命令行覆盖 Makefile 中的命令行。

或者,export TESTS='names-of-tests'; make -e check 从环境中获取 TESTS 的值。

如果您没有使用 TESTS 而是 check-local 或其他一些目标,那么这将不起作用。