![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 355
|
Bei meinem aktuellen Problem geht es um das Entwerfen eines Test-Frameworks. Bevor jetzt die Antwort kommt: Nimm doch XYZ. Ja, ich kenne cppunit und Konsorten. Aber die passen einfach nicht. Zunächst zwei grundsätzliche Sachen. Als erstes gibt es Testfälle (class TestCase). Diese verfügen relativ banal über eine Test-Methode. Die Test-Methode wirft entweder Exceptions (=Test fehlgeschlagen) oder nicht (=Test erfolgreich). So gibt es beispielsweise Makros, die dann das ganze übernehmen. Beispiel: Code: class MyTest : public TestCase
{
public:
void Test()
{
TEST_ASSERT(2 == 2, "2 ist nicht gleich 2!");
}
};
Code: Testgroup group1; group1.addTest(test1); group1.addTest(test2); Testgroup group2; group1.addTest(group2); group2.addTest(test3); // usw. Eine Lösung wäre, den gesamten Test abzubrechen, sobald der erste (Login) schief läuft. Also Exceptions einfach Exceptions sein lassen... Das kann extrem nervig werden, wenn man ein großes Testpaket hat, bei dem vielleicht 10 weitere Tests nicht vom Login abhängen aber wegen etwas anderem fehlschlagen würden. Daher war meine Idee, die testgruppe dahingehend zu erweitern, dass sie weiss, wie sie bei einem Problem verfahren soll. Beispiel: Code: Testgroup group1; group1.addTest(loginTest, TestGroup::GROUP_FAILURE); group1.addTest(test1, TestGroup::GROUP_FAILURE); group1.addTest(test2, TestGroup::STANDALONE); group1.addTest(test3, TestGroup::STANDALONE); group1.addTest(test4, TestGroup::STANDALONE); // usw. Mein Problem ist, dass die Exceptions nun nicht einfach weitergereicht werden dürfen. Es kann ja sein, dass noch weitere Tests aufgerufen werden können. Andererseits kann es sein, dass nun test2 und test 3 fehlschlagen, ich also zwei Fehler/Exceptions habe. Und zu allem Überfluss muss derjenige, der den Test ausführt irgendwie wissen, woher der Fehler oder die Exception kommt (das wäre das kleinere übel, man kann ja this mit in die Exception stopfen, dann weiss man wo der Fehler ist). Meine aktuelle Lösung ist, ein Callback-Objekt mit an die Testmethode zu übergeben. Das soll dann immer sofort benachrichtigt werden, wenn ein einzelner Test fehlschlägt oder erfolgreich war. Das Widerspricht aber wieder etwas der Definition, dass auch die Testgruppen nach Möglichkeit eine Exception werfen sollten wenn sie fehlschlagen (= mindestens einer der Kinder fehlschlägt). Das gefällt mir alles so nicht, auch wenn es geht. Hat irgendwer einen Schubser für mich in die richtige Richtung?
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #2 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Ich kann kaum c++, aber ich würde in Testfällen die Exceptionnachrichten loggen/ausgeben und danach "fressen". In Java ist das klassische try/catch. Im Catch die Exception loggen aber nicht werfen und dadurch kann der Test dann weiterlaufen.
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #3 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 355
|
Prinzipiell ist das wie in java und in PHP mit den Exceptions Soweit so gut, aber wenn ich das grafisch visualisieren will und nicht nur loggen?
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #4 |
| Erfahrener Benutzer Registriert seit: 31.12.2006 Ort: Zürich
Beiträge: 298
|
Du kannst die Fehlermeldungen ja in einem Array oder Struct (oder was es in C++ halt gibt) zwischenspeichern und am Schluss in einer Schleife alle ausgeben
__________________ . <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination. |
| | |
| | Nach oben #5 | |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
| Zitat:
__________________ I did it my way - Senseless-Blog | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [PHP] PHPUnit oder testgetriebene Entwicklung | mepeisen | Tutorials | 1 | 06.12.2007 10:56 |
| "Event Recorder" zum Automatisieren von Tests | Orolhawion | Sonstige Programmiersprachen | 17 | 02.10.2007 14:45 |
| FCKEditor-PlugIn: Bitte um Tests | Basti | JavaScript und AJAX | 5 | 28.06.2007 14:13 |
| Entwurfsproblem: Aus Widgets in Datenbank schreiben? | Basti | PHP-Programmierung | 3 | 29.03.2007 13:13 |
| Frage zu Unit Tests | björn | PHP-Programmierung | 13 | 18.08.2006 00:42 |