首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost Unit Testing和Visual Studio2005/Visual C++以及BOOST_AUTO_TEST_SUITE(stringtest)命名空间?

Boost Unit Testing和Visual Studio2005/Visual C++以及BOOST_AUTO_TEST_SUITE(stringtest)命名空间?
EN

Stack Overflow用户
提问于 2009-12-10 04:01:18
回答 1查看 1.3K关注 0票数 0

我正在阅读Boost单元测试框架上的this article

然而,我在第一个示例中遇到了一些问题,我猜他们遗漏了一些东西(对于C++核心程序员来说很明显),就像IBM在他们的文章中经常做的那样。另一种可能是我的Visual Studio2005 C++编译器对于这个例子来说太旧了。

代码语言:javascript
复制
#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行看起来有点可疑(特别是因为它们的参数没有引号,而且它们是未声明的identifiers...but,这可能意味着它们是宏,我不确定我是否理解了这个概念,或者这在VC++ 8.0中是否可用)。

代码语言:javascript
复制
#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

有什么原因导致这段代码不能工作吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-10 06:03:37

在我看来是正确的。我的Boost.Test代码看起来也是这样。我正在运行VS2008,但我知道它在2005年也能正常工作。

看起来你的问题出在别的地方。如果您使用预编译头文件(为什么要在这么小的测试程序中这样做?),那么stdafx.h不应该作为文件中的第一部分吗?

第一行是用来做什么的?您似乎不会使用它,而且在C++中_MYSTRING是一个保留名称(禁止使用以下划线开头、后面跟着大写字母的名称)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1876444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档