automake:自动运行单元测试

Pad*_*dre 5 automake autoconf unit-testing makefile boost-unit-test-framework

我正在维护一个autoconf软件包,并希望集成自动测试.我使用Boost Unit Test Framework我的单元测试,并能够成功地将其集成到包中.

也就是说它可以通过编译make check,但是没有运行(尽管我读过它们make check都编译并运行测试).结果,我必须在构建繁琐的测试后手动运行它.

Makefile.am 在test文件夹中看起来像这样:

check_PROGRAMS = prog_test
prog_test_SOURCES = test_main.cpp ../src/class1.cpp class1_test.cpp class2.cpp ../src/class2_test.cpp ../src/class3.cpp ../src/class4.cpp
prog_test_LDADD = $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
Run Code Online (Sandbox Code Playgroud)

Makefile.am 在根文件夹中:

SUBDIRS = src test
dist_doc_DATA = README
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
Run Code Online (Sandbox Code Playgroud)

运行test/prog产生输出:

Running 4 test cases...

*** No errors detected
Run Code Online (Sandbox Code Playgroud)

(我不认为你需要我的测试用例的内容才能回答我的问题,所以我现在省略了它们)

那么我怎样才能automake在每次跑步时运行我的测试make check

xai*_*zek 9

至少有一种方法是设置TESTS变量.以下是关于automake文档:

如果定义了特殊变量TESTS,则其值将被视为要运行以执行测试的程序或脚本的列表.

所以添加线

TESTS = $(check_PROGRAMS)
Run Code Online (Sandbox Code Playgroud)

应该指示它运行测试make check.

  • 来自https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#index-TESTS:"check_PROGRAMS(和check_LIBRARIES,check_LTLIBRARIES ...)中列出的程序仅在make检查期间构建,你应该列出你的测试所需的任何程序,不需要通过make all来构建.注意check_PROGRAMS不会自动添加到TESTS,因为check_PROGRAMS通常列出测试使用的程序,而不是测试本身.当然,如果所有程序都是测试用例,你可以设置TESTS = $(check_PROGRAMS)." (3认同)