J'utilise Google cadre de test pour définir des tests unitaires. J'ai trois projets dans ma solution:C++ liant question sur Visual Studio 2008, lorsque réticulation différents projets sur la même solution
- FN (mon projet)
- FN_test (mes tests)
- gtest (Cadre Google test)
Je mis FN_test d'avoir FN et gtest comme références (dépendances), et puis je pense que je suis prêt à mettre en place mes tests (j'ai déjà mis tout le monde à/MTd (ne pas le faire me conduisait à des erreurs de liaison avant)).
En particulier, je définis une classe appelée Embark dans FN que je voudrais tester en utilisant FN_test. Jusqu'ici tout va bien. Ainsi j'écris une classe appelée EmbarkTest en utilisant googletest, déclarer un membre Embarquez * et écrire dans le constructeur:
EmbarkTest() {
e = new Embark(900,2010);
}
Puis, F7 pressé, je reçois le texte suivant:
1>FN_test.obj : error LNK2019: unresolved external symbol "public: __thiscall Embark::Embark(int,int)" ([email protected]@[email protected]@Z) referenced in function "protected: __thiscall EmbarkTest::EmbarkTest(void)" ([email protected]@[email protected])
1>D:\Users\lg\Product\code\FN\Debug\FN_test.exe : fatal error LNK1120: 1 unresolved externals
Est-ce Quelqu'un sait ce que j'ai mal fait et/ou que puis-je faire pour régler cela?
EDIT: pertinent Code de Embark.h
class Embark
{
public:
//Constructor for initial state
Embark(int _id, int _year);
//Destructor
~Embark();
/* ... */
}
Qu'en est-il du code correspondant d'Embark.cpp? –
J'ai eu un problème très similaire avec Visual Studio 2013 en essayant de lier le cadre de test unitaire C++ interne de Microsoft. Après avoir essayé cette question/réponse m'a aidé. En outre, en indiquant l'évidence, les tests unitaires ne fonctionnent pas comme dans les langages dynamiques. Si vous appelez une fonction indéfinie en Python, le test de l'unité échoue. Si vous appelez une fonction indéfinie en C++, le projet ne liera pas et aucun test ne sera exécuté. Besoin d'adopter une approche légèrement différente de TDD en C++. –