我正在尝试使用boost 1.33.1在远程系统上使用boost.test
。在我的电脑上,来自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更改为:
#include <boost/test/included/unit_test_framework.hpp>
但是编译器说:
main.cpp:7: error: expected constructor, destructor, or type conversion before ‘(’ token
这是什么?怎么解决?
答案 0 :(得分:3)
On Boost 1.33使用:
#include <boost/test/auto_unit_test.hpp>
取代:
#include <boost/test/unit_test.hpp>
并且在#include之前添加:
#define BOOST_AUTO_TEST_MAIN
或者你会得到一个链接器错误
答案 1 :(得分:0)
如果你的boost版本低于1.33,你应该尝试将BOOST_AUTO_TEST_CASE
重命名为BOOST_AUTO_UNIT_TEST
,并且不应该在较新版本的boost上破坏编译。
请参阅这些Boost.Test 1.33 Release Notes:
BOOST_AUTO_UNIT_TEST重命名为 BOOST_AUTO_TEST_CASE。旧名仍然 提供但已弃用
答案 2 :(得分:0)
目标平台上的升级版本是什么?你在那里使用旧版本吗?
由于您使用的是仅头版本的boost.test(包括boost / test / included / unit_test.hpp标头而不是boost / test / unit_test.hpp),您不能只复制工作的boost安装从您的PC到目标机器并指示您的编译器使用它?