如何使用GNU自动工具为"进行检查"创建测试
我在特定项目的构建系统上使用GNU自动工具。我想开始编写用于验证的自动化测试。我只想输入" make check"以使其自动运行这些。我的项目是C ++,尽管我仍然对为其他语言编写自动化测试感到好奇。
这是否与几乎所有的单元测试框架兼容(我当时在考虑使用cppunit)?如何将这些单元测试框架挂钩进行检查?我是否可以确保不需要安装单元测试软件就可以配置和构建项目的其余部分?
解决方案
我们似乎在第一段中问了两个问题。
首先是关于向GNU autotools工具链中添加测试,但是,如果我对理解正确,这些测试用于验证是否存在构建应用程序所需的环境(依赖的库和工具)以及使构建适应环境(特定于平台的差异)。
第二个是关于对C ++应用程序进行单元测试以及在何处调用这些测试的,我们建议从autotools工具链(大概是从configure脚本)中进行。尽管在Makefile中放置"测试"目标是执行测试套件的一种更常规的方式,但这样做并非常规。使用自动工具构建和安装应用程序的典型步骤(至少从用户的角度出发,而不是从开发人员的角度出发)是运行configure脚本,然后运行make,然后选择运行make test,最后进行make install。
对于第二个问题,不想让cppunit成为依赖项,为什么不随同c ++应用程序一起分发它呢?我们能将其正确地以我们正在使用的存档格式(tar.gz,tar.bz2或者.zip)连同源代码一起正确放置吗?过去我曾经使用过cppunit,并且对它感到满意,曾经使用过JUnit和其他xUnit样式框架。
要在发出make check
时进行测试运行,需要将它们添加到TESTS
变量中
假设我们已经构建了运行单元测试的可执行文件,只需将可执行文件的名称添加到TESTS变量中,如下所示:
TESTS=my-test-executable
然后,当我们执行" make check"时,它将自动运行,并且如果可执行文件返回非零值,它将报告为测试失败。如果我们有多个单元测试可执行文件,只需将它们全部列在TESTS
变量中即可:
TESTS=my-first-test my-second-test my-third-test
他们都将逃跑。