2013-05-01 2 views
6

Мое приложение C++ имеет различные тесты интеграции на основе оболочки для автономных программ, а также тесты модулей исходного кода для API приложения. Тесты проходят через цель make check, сгенерированную с помощью Autotools (autoconf, automake), которая come with a test-driver and a log parser. Я начал применять тестовую платформу Boost Unit для лучшего управления наборами тестов модулей. Есть ли способ запуска как приемочных испытаний, так и модульных испытаний (с использованием как Boost UTF, так и стандартных тестов TAP) в рамках цели make check?Использование тестовой платформы модуля расширения (UTF) с `make check`

My Makefile.am выглядит примерно так:

check_PROGRAMS = test1 test2 
SOURCES = test1.cpp test2.cpp 
CC = g++ 
TESTS = $(check_PROGRAMS) standalone1.test standalone2.test 
LDADD = -lboost_unit_test_framework 
TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ 
    $(top_srcdir)/test/tap-driver.sh 
EXTRA_DIST = $(TESTS) 

подпиточного тест UTF люкс выглядит следующим образом:

#define BOOST_TEST_DYN_LINK 
#define BOOST_TEST_MODULE "My Unit Tests" 

#include <boost/test/unit_test.hpp> 

BOOST_AUTO_TEST_SUITE(MyTestSuite1); 
    BOOST_AUTO_TEST_CASE(MyTestCase1) { 
     BOOST_CHECK(true); 
    } 
BOOST_AUTO_TEST_SUITE_END(); 

ответ

2

Если вы используете boost-m4, как я, вы можете попробовать:

./configure. переменный ток:

BOOST_REQUIRE([1.61]) 
BOOST_SYSTEM 
BOOST_TEST 

./test/Makefile.am (добавить AM_CPPFLAGS, AM_LDFLAGS и переменная LDADD)

AM_CPPFLAGS = $(BOOST_CPPFLAGS) -DBOOST_TEST_DYN_LINK 
AM_LDFLAGS = $(BOOST_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) 
LDADD = $(BOOST_SYSTEM_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) 

check_PROGRAMS = test1 test2 
SOURCES = test1.cpp test2.cpp 
CC = g++ 
TESTS = $(check_PROGRAMS) standalone1.test standalone2.test 
EXTRA_DIST = $(TESTS) 

Это кажется более элегантным, чем прямое размещение «-lboost_unit_test_framework» внутри вашего Makefile.am. Вы можете также рассмотреть возможность перемещения '#define BOOST_TEST_DYN_LINK' из вашего cpp в AM_CPPFLAGS в Makefile.am, как показано выше.

Для получения дополнительной информации см. Boost-m4 README

1

Стандартный способ справиться с ней не используется бен праймериз но тест первичной , В вашем случае ваш Makefile.am будет выглядеть примерно так:

LDADD = -lboost_unit_test_framework 

TESTS = standalone1 standalone2 
standalone1_SOURCES = test1.cpp standalone1.test 
standalone2_SOURCES = test2.cpp standalone2.test 

TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ 
        $(top_srcdir)/test/tap-driver.sh 
EXTRA_DIST = $(TESTS) 

Для получения дополнительной информации проверить это answer