如何在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

编辑:所以我想模仿这些运行:

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
============================================================================

这正是我所期望的。

最新更新