如何 运行 在 Makefile 中测试二进制文件的用例
How to run test cases for a binary in Makefile
有一个生成二进制应用程序的小项目。源代码是 C,我正在使用 autotools 创建 Makefile
并构建二进制文件 - 它也能正常工作。
我想 运行 使用该二进制文件测试用例。这是我所做的:
SUBDIRS = src
dist_doc_DATA = README
TESTS=
TESTS+=tests/config1.conf
TESTS+=tests/config2.conf
TESTS+=tests/config3.conf
TESTS+=tests/config4.conf
TESTS+=tests/config5.conf
TESTS+=tests/config6.conf
TESTS+=tests/config7.conf
TESTS+=tests/config8.conf
TESTS+=tests/config9.conf
TESTS+=tests/config10.conf
TESTS+=tests/config11.conf
我想运行这些案例作为工具的参数。当我运行make check
时,我得到:
make[3]: Entering directory '/home/airween/src/mytool'
FAIL: tests/config1.conf
FAIL: tests/config2.conf
FAIL: tests/config3.conf
这是正确的,因为这些文件是简单的配置文件。
我如何使用上面的脚本解决 make check
运行 我的工具,最后我得到一个列表,其中包含成功、失败、...测试的数量,就像在那种情况下一样:
============================================================================
Testsuite summary for mytool 0.1
============================================================================
# TOTAL: 11
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 11
# XPASS: 0
# ERROR: 0
编辑:所以我想效仿这些 运行s:
for f in `ls -1 tests/*.conf; do src/mytool ${f}; done
但是 - 当然 - 我想在最后看到摘要。
谢谢。
Autotools 的 built-in 测试 运行ner 希望您通过 make
变量 TESTS
指定可执行测试的名称。您不能只是将随机文件名放在那里并期望 make
或 Automake 知道如何处理它们。
测试可以是构建的程序、生成的脚本、随项目分发的静态脚本,或者以上的任意组合。
How can I solve that make check runs my tool with the scripts above, and finally I get a [test summary report]?
您已经确认您的配置文件不是脚本,所以不要那样称呼它们!这其实是问题的症结所在。最简单的解决方案可能是创建实际的可执行脚本,每种情况一个,并在 TESTS
变量中命名 those。每个人都会 运行 使用适当的配置文件测试二进制文件(也就是说,如果这些是您要执行的测试,您有责任让他们这样做)。
好的,来自here的解决方案:
tests/Makefile.am:
==================
TEST_EXTENSIONS = .conf
CONF_LOG_COMPILER = ./test-suit.sh
TESTS=
TESTS+=config1.conf
TESTS+=config2.conf
TESTS+=config3.conf
TESTS+=config4.conf
TESTS+=config5.conf
TESTS+=config6.conf
TESTS+=config7.conf
TESTS+=config8.conf
TESTS+=config9.conf
TESTS+=config10.conf
TESTS+=config11.conf
test/test-suit.sh:
==================
#!/bin/sh
CONF=
exec ../src/mytool $CONF
结果:
make check
...
PASS: config1.conf
PASS: config2.conf
PASS: config3.conf
PASS: config4.conf
PASS: config5.conf
PASS: config6.conf
PASS: config7.conf
PASS: config8.conf
PASS: config9.conf
PASS: config10.conf
PASS: config11.conf
============================================================================
Testsuite summary for mytool 0.1
============================================================================
# TOTAL: 11
# PASS: 11
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
这是我所期望的。
有一个生成二进制应用程序的小项目。源代码是 C,我正在使用 autotools 创建 Makefile
并构建二进制文件 - 它也能正常工作。
我想 运行 使用该二进制文件测试用例。这是我所做的:
SUBDIRS = src
dist_doc_DATA = README
TESTS=
TESTS+=tests/config1.conf
TESTS+=tests/config2.conf
TESTS+=tests/config3.conf
TESTS+=tests/config4.conf
TESTS+=tests/config5.conf
TESTS+=tests/config6.conf
TESTS+=tests/config7.conf
TESTS+=tests/config8.conf
TESTS+=tests/config9.conf
TESTS+=tests/config10.conf
TESTS+=tests/config11.conf
我想运行这些案例作为工具的参数。当我运行make check
时,我得到:
make[3]: Entering directory '/home/airween/src/mytool'
FAIL: tests/config1.conf
FAIL: tests/config2.conf
FAIL: tests/config3.conf
这是正确的,因为这些文件是简单的配置文件。
我如何使用上面的脚本解决 make check
运行 我的工具,最后我得到一个列表,其中包含成功、失败、...测试的数量,就像在那种情况下一样:
============================================================================
Testsuite summary for mytool 0.1
============================================================================
# TOTAL: 11
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 11
# XPASS: 0
# ERROR: 0
编辑:所以我想效仿这些 运行s:
for f in `ls -1 tests/*.conf; do src/mytool ${f}; done
但是 - 当然 - 我想在最后看到摘要。
谢谢。
Autotools 的 built-in 测试 运行ner 希望您通过 make
变量 TESTS
指定可执行测试的名称。您不能只是将随机文件名放在那里并期望 make
或 Automake 知道如何处理它们。
测试可以是构建的程序、生成的脚本、随项目分发的静态脚本,或者以上的任意组合。
How can I solve that make check runs my tool with the scripts above, and finally I get a [test summary report]?
您已经确认您的配置文件不是脚本,所以不要那样称呼它们!这其实是问题的症结所在。最简单的解决方案可能是创建实际的可执行脚本,每种情况一个,并在 TESTS
变量中命名 those。每个人都会 运行 使用适当的配置文件测试二进制文件(也就是说,如果这些是您要执行的测试,您有责任让他们这样做)。
好的,来自here的解决方案:
tests/Makefile.am:
==================
TEST_EXTENSIONS = .conf
CONF_LOG_COMPILER = ./test-suit.sh
TESTS=
TESTS+=config1.conf
TESTS+=config2.conf
TESTS+=config3.conf
TESTS+=config4.conf
TESTS+=config5.conf
TESTS+=config6.conf
TESTS+=config7.conf
TESTS+=config8.conf
TESTS+=config9.conf
TESTS+=config10.conf
TESTS+=config11.conf
test/test-suit.sh:
==================
#!/bin/sh
CONF=
exec ../src/mytool $CONF
结果:
make check
...
PASS: config1.conf
PASS: config2.conf
PASS: config3.conf
PASS: config4.conf
PASS: config5.conf
PASS: config6.conf
PASS: config7.conf
PASS: config8.conf
PASS: config9.conf
PASS: config10.conf
PASS: config11.conf
============================================================================
Testsuite summary for mytool 0.1
============================================================================
# TOTAL: 11
# PASS: 11
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
这是我所期望的。