有一个小项目可以生成二进制应用程序。源代码是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
编辑:所以我想模仿这些运行:
for f in `ls -1 tests/*.conf; do src/mytool ${f}; done
但是——当然——我希望看到最后的总结。
谢谢。
Autotools的内置测试运行程序希望您通过make
变量TESTS
指定可执行测试的名称。你不能只是把随机文件名放在那里,然后期望make
或Automake知道如何处理它们。
测试可以是构建的程序、生成的脚本、随项目分发的静态脚本,也可以是以上任意组合。
我如何解决使用上面的脚本运行我的工具,并最终获得[测试摘要报告]的问题?
您已经确认您的配置文件不是脚本,所以请停止调用它们!这其实是问题的症结所在。最简单的解决方案可能是创建实际的可执行脚本,每种情况一个,并在TESTS
变量中命名这些。每一个都将使用适当的配置文件运行测试中的二进制文件(也就是说,如果这些是您想要执行的测试,则您负责让它们执行这些操作(。
另请参阅《汽车制造手册》中关于测试的章节。
好的,这里的解决方案:
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=$1
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
============================================================================
这正是我所期望的。