我正在使用GNU autotools来构建特定项目的构建系统.我想开始为验证编写自动化测试.我想输入"make check"让它自动运行这些.我的项目是用C++编写的,虽然我仍然对为其他语言编写自动化测试感到好奇.
这几乎与每个单元测试框架兼容(我在考虑使用cppunit)吗?如何将这些单元测试框架挂钩到make check中?我是否可以确保不需要安装单元测试软件来配置和构建项目的其余部分?
要在发出时运行测试make check
,需要将它们添加到TESTS
变量中
假设您已经构建了运行单元测试的可执行文件,您只需将可执行文件的名称添加到TESTS变量中,如下所示:
TESTS=my-test-executable
然后应该在您运行时自动运行make check
,如果可执行文件返回非零值,它将报告为测试失败.如果您有多个单元测试可执行文件,只需在TESTS
变量中列出它们:
TESTS=my-first-test my-second-test my-third-test
他们都会跑.
我正在使用Check 0.9.10
configure.ac Makefile.am src/Makefile.am src/foo.c tests/check_foo.c tests/Makefile.am
./configure.ac
PKG_CHECK_MODULES([CHECK],[check> = 0.9.10])
./tests/Makefile.am
用于测试代码
TESTS = check_foo check_PROGRAMS = check_foo check_foo_SOURCES = check_foo.c $(top_builddir)/src/foo.h check_foo_CFLAGS = @CHECK_CFLAGS@
并编写测试代码, ./tests/check_foo.c
START_TEST (test_foo) { ck_assert( foo() == 0 ); ck_assert_int_eq( foo(), 0); } END_TEST /// And there are some tcase_xxx codes to run this test
使用检查可以使用超时和提升信号.这非常有帮助.