Je lis this article sur le Boost Unit Testing Framework.Boost Unit Testing et Visual Studio 2005/Visual C++ et l'espace de noms BOOST_AUTO_TEST_SUITE (stringtest)?
Cependant, j'ai un peu de mal avec le premier exemple, je suppose qu'ils ont laissé quelque chose (quelque chose qui serait évident pour les codeurs hardcore C++) comme le fait souvent IBM dans leurs articles. Une autre possibilité est que mon compilateur Visual Studio 2005 C++ est trop ancien pour l'exemple.
#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()
Pour moi, les BOOST_AUTO_TEST_SUITE et les lignes BOOST_AUTO_TEST_CASE regarder un peu suspect (d'autant plus qu'ils ne disposent pas des guillemets autour des arguments, et ils sont des identificateurs non déclarés ... mais cela signifie probablement qu'ils sont des macros et je suis pas certain que je comprends le concept ou si tel est disponible en 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
y at-il des raisons pour lesquelles ce code ne fonctionne pas?
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
Mettre en évidence que stdafx.h était la première ligne du fichier effacer beaucoup d'erreurs, maintenant il est à un seul: 1> Liaison ... 1> LINK: erreur fatale LNK1104: impossible d'ouvrir le fichier 'libboost_unit_test_framework-vc80-mt-gd-1_40.lib' – leeand00
Le fichier libboost_unit_test_framework-vc80-mt-gd-1_40.lib est en effet situé dans mon répertoire C: \ Program Files (x86) \ boost \ boost_1_40 \ lib. – leeand00
Et ce chemin est-il ajouté au chemin de liaison du projet (ou du studio visuel)? – jalf