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.am
或 Makefile.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
或其他一些目标,那么这将不起作用。
我目前正在从事一个使用 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.am
或 Makefile.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
或其他一些目标,那么这将不起作用。