2011-02-02 1 views
11

Я использую Boost.Test для модульного тестирования.Boost.Test тесты на статической библиотеке

По нескольким причинам я хотел бы написать единичные тестовые примеры в разных статических библиотеках.

Проблема в том, что когда я это делаю, автоматический регистратор не работает.

Например, если у меня есть что-то вроде:

// foo_tests.cpp 
#define BOOST_TEST_MODULE "Foo" 
#include <boost/test/unit_test.hpp> 
BOOST_AUTO_TEST_CASE(Bar) 
{ 
    BOOST_CHECK(false); 
} 
// used to generate libFooTests.a 

// main.cpp 
#define BOOST_TEST_DYN_LINK 
#define BOOST_TEST_MAIN 
#include <boost/test/unit_test.hpp> 
// used to generate main.o 

Тогда, если я свяжу main.o с libFooTests.a и выполнить окончательный двоичный файл, он говорит:

Test setup error: test tree is empty

Все работает отлично, если я создаю двоичный код из исходных кодов напрямую, но я не могу писать модульные тесты внутри статических библиотек, используя автоматическую регистрацию.

Могу ли я достичь этого?

Есть ли какие-то макросы, которые мне нужно определить? Какой-то символ, который мне нужно экспортировать из libFooTests.a?

Спасибо!

ответ