проблема с boost.test со старой версией - PullRequest
1 голос
/ 06 декабря 2010

Я пытаюсь использовать boost.test в удаленной системе с бустом 1.33.1. На моем компьютере работает маленький пример из http://www.boost.org/doc/libs/1_42_0/libs/test/doc/html/tutorials/hello-the-testing-world.html:

#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp> // I've changed here

int add( int i, int j ) { return i+j; }

BOOST_AUTO_TEST_CASE( my_test )   // <--- line 7
{
// seven ways to detect and report the same error:
BOOST_CHECK( add( 2,2 ) == 4 );        // #1 continues on error

BOOST_REQUIRE( add( 2,2 ) == 4 );      // #2 throws on error

if( add( 2,2 ) != 4 )
  BOOST_ERROR( "Ouch..." );            // #3 continues on error

if( add( 2,2 ) != 4 )
  BOOST_FAIL( "Ouch..." );             // #4 throws on error

if( add( 2,2 ) != 4 ) throw "Ouch..."; // #5 throws on error

BOOST_CHECK_MESSAGE( add( 2,2 ) == 4,  // #6 continues on error
                     "add(..) result: " << add( 2,2 ) );

BOOST_CHECK_EQUAL( add( 2,2 ), 4 );   // #7 continues on error
}

но в удаленной системе файл unit_test.hpp не существует. На моем компьютере файл unit_test_framework.hpp просто:

// deprecated
#include <boost/test/included/unit_test.hpp>

и он присутствует в основной системе. Поэтому я попытался изменить включение на:

#include <boost/test/included/unit_test_framework.hpp>

но компилятор говорит:

main.cpp:7: error: expected constructor, destructor, or type conversion before ‘(’ token

что это? Как это решить?

Ответы [ 3 ]

3 голосов
/ 24 октября 2012

В режиме Boost 1.33 используется:

#include <boost/test/auto_unit_test.hpp>

вместо:

#include <boost/test/unit_test.hpp>

, а также до #include add:

#define BOOST_AUTO_TEST_MAIN

или вы получите ошибку компоновщика

0 голосов
/ 06 декабря 2010

Какая буст-версия на вашей целевой платформе?Вы используете старую версию?

Поскольку вы используете версию boost.test только для заголовков (вы включаете заголовок boost / test / includes / unit_test.hpp, а не boost / test / unit_test.hpp)Разве вы не можете просто скопировать работающую надстройку с вашего ПК на целевую машину и дать указание компилятору использовать ее?

0 голосов
/ 06 декабря 2010

Если ваша версия boost старше 1.33, попробуйте переименовать BOOST_AUTO_TEST_CASE в BOOST_AUTO_UNIT_TEST, и это не должно нарушать компиляцию в более новых версиях boost.

См. Эти Boost.Test 1,33 Примечания к выпуску :

BOOST_AUTO_UNIT_TEST переименован в BOOST_AUTO_TEST_CASE. Старое имя еще предоставляется, но не рекомендуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...