Tests mit CxxTest



  • Hallo!

    Ich habe mich gerade an CxxTest versucht.
    Ich habe das Beispiel aus der Dokumentation starten können - das funktioniert alles prima.
    Der Beispiel-Test:

    void testAddition( void ) {
    		TS_ASSERT( 1 + 1 > 1 );
    		TS_ASSERT_EQUALS( 1 + 1, 2 );
    	}
    

    Aber jetzt möchte ich meine eigenen Klassen testen.
    Dazu habe ich diese Methode geschrieben:

    void testCDate_getDate() {
    		CDate *x = new CDate(10,02,3005);;
    		TS_ASSERT( x->getDate() == "10.02.3005" );
    	}
    

    Nur da kommt die Fehlermeldung:

    error LNK2028: Nicht aufgelöstes Token (0A00048C) ""public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall CDate::getDate(void)" (?getDate@CDate@@$$FQAE?AV?basic_string@DU?basic\_string@DU?char_traits@D@std@@V?allocator@D@2@@std@@XZ)",aufdasinFunktion""public:void__thiscallMyTest::testCDate_getDate(void)"(?testCDate_getDate@MyTest@@allocator@D@2@@std@@XZ)", auf das in Funktion ""public: void \_\_thiscall MyTest::testCDate\_getDate(void)" (?testCDate\_getDate@MyTest@@$FQAEXXZ)" verwiesen wird.

    Damit kann ich als Neuling nun nichts anfangen. Die Hilfe stellt mich vor ähnliche Verständnisprobleme. Es scheint ja irgend etwas damit zu tun zu haben, wie ich diese Funktion aufrufe.

    Kann mir da wer helfen? Welche Informationen fehlen noch?

    Grüße, pktm



  • Richige Lib und Runtime gelinkt?



  • Artchi schrieb:

    Richige Lib und Runtime gelinkt?

    Hallo!

    Damit kann ich leider noch nichts anfangen :-s

    Ich habe ein Projekt in VS2008, und da habe ich einige Klassen geschrieben. Die funktionieren auch.
    Dann habe ich ein weiteres Projekt in der selben Mappe angelegt wo ich die Tests drin schreiben will. Dieses Projekt hat das andere als Abhängigkeit.
    Was von meinen anderen Klassen wäre denn die Lib und die Runtime? Oder ist das was ganz anderes?

    Grüße, pktm



  • naja, du kannst dir ja eine *.lib erzeugen lassen als Output vom ursprünglichen Projekt. Diese solltest du dann als Linker Input in den Projekteinstellungen deines Testprojektes angeben. Aber ich vermute, dass du gerade eine *.exe erstellst. Das müsstest du in den Output-Einstellungen deines zu testenden Projektes angeben (also den wechsel von ausführbare Datei (heißt des glaub ich) in statische Bibliothek.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vorden schrieb:

    naja, du kannst dir ja eine *.lib erzeugen lassen als Output vom ursprünglichen Projekt. Diese solltest du dann als Linker Input in den Projekteinstellungen deines Testprojektes angeben. Aber ich vermute, dass du gerade eine *.exe erstellst. Das müsstest du in den Output-Einstellungen deines zu testenden Projektes angeben (also den wechsel von ausführbare Datei (heißt des glaub ich) in statische Bibliothek.

    Ja danke, das hat funktioniert.
    Gibt es noch ne Möglichkeit, keine lib erzeugen zu müssen?

    Ich hate erst versucht, die cpp-Datei, die die Methode für meine Tests aufruft, im Hauptprojekt unter zu bringen, aber dann hatte ich das Problem, dass ich zwei main()-Methoden hatte.
    Das gab nen Fehler.

    Grüße, pktm


Log in to reply