我正在阅读关于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