我正在閱讀關於Boost單元測試框架的this article。Boost單元測試和Visual Studio 2005/Visual C++和BOOST_AUTO_TEST_SUITE(stringtest)命名空間?
但是我有一點與第一例子麻煩,我的猜測是,他們漏掉了什麼(東西將是顯而易見的鐵桿C++程序員)作爲IBM經常在他們的文章呢。另一種可能性是我的Visual Studio 2005 C++編譯器對於這個例子來說太老了。
#include "stdafx.h"
#define BOOST_TEST_MODULE stringtest
#include <boost/test/unit_test.hpp>
//#include "mystring.h"
BOOST_AUTO_TEST_SUITE(stringtest) // name of the test suite is stringtest
BOOST_AUTO_TEST_CASE(test1)
{
/*
mystring s;
BOOST_CHECK(s.size() == 0);
*/
BOOST_CHECK(0 == 0);
}
BOOST_AUTO_TEST_CASE(test2)
{
/*
mystring s;
s.setbuffer("hello world");
BOOST_REQUIRE_EQUAL('h', s[0]); // basic test
*/
BOOST_CHECK(0 == 0);
}
BOOST_AUTO_TEST_SUITE_END()
對我來說,BOOST_AUTO_TEST_SUITE和BOOST_AUTO_TEST_CASE線條看起來有些犯罪嫌疑人(特別是因爲他們沒有圍繞參數報價和他們是不宣而標識符...但是這可能意味着他們是宏和我不能肯定我理解這個概念,或者在VC++ 8.0),可...
#ifdef _MYSTRING
#define _MYSTRING
class mystring {
char* buffer;
int length;
public:
void setbuffer(char* s) { buffer s = s; length = strlen(s); }
char& operator[ ] (const int index) { return buffer[index]; }
int size() {return length; }
}
#endif
是否有任何理由爲什麼這個代碼將無法正常工作?
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(7) : error C2065: 'stringtest' : undeclared identifier
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(9) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(9) : error C2146: syntax error : missing ';' before identifier 'BOOST_AUTO_TEST_CASE'
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(9) : error C2065: 'test1' : undeclared identifier
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(10) : error C2448: 'BOOST_AUTO_TEST_CASE' : function-style initializer appears to be a function definition
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(18) : error C2065: 'test2' : undeclared identifier
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(19) : error C2448: 'BOOST_AUTO_TEST_CASE' : function-style initializer appears to be a function definition
1>c:\users\andy\documents\visual studio 2005\projects\unittesttests\unittesttests\unittesttests.cpp(29) : fatal error C1004: unexpected end-of-file found
將stdafx.h作爲文件中的第一行真的好像清除了很多錯誤,現在只有一個: 1>正在鏈接... 1> LINK:致命錯誤LNK1104:無法打開文件'libboost_unit_test_framework-vc80-mt-gd-1_40.lib' – leeand00 2009-12-09 22:21:25
文件libboost_unit_test_framework-vc80-mt-gd-1_40.lib確實位於我的C:\ Program Files文件(x86)\ boost \ boost_1_40 \ lib目錄中。 – leeand00 2009-12-09 22:27:55
並且將該路徑添加到項目(或Visual Studio)鏈接器路徑中? – jalf 2009-12-09 22:37:28