| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
| Mock Objekte mit Mockito
Moin, versuche gerade die Mock Objekte meiner Unit-Tests mit Mockito zu erzeugen. Allerdings ist die Doku äußerst mager, und die API scheint sich von der Java-API doch zu unterscheiden. Weiß jemand, wie man damit jetzt einen Testcase schreibt, indem erstens Rückgabewerte von Stub-Methoden definiert werden, zweitens deren Aufrufzahl festgelegt wird, drittens die Test-Aktion angestoßen wird, und viertens geprüft wird, ob der Test erfolgreich war? Das Beispiel auf der Seite sagt mir dazu leider garnix, und der Code ist auch nicht dokumentiert
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #2 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Hmm
Total komische API, Der test könnte vielleicht klarheit schaffen: http://bitbucket.org/loomis/mockito-...estMatchers.as Ich glaub aber das vielleicht das hier: http://sourceforge.net/projects/asmock/ angenehmer ist.
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #3 (permalink) | |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Hi kaneda, vielen Dank für deine Antwort! Leider verstehe ich von dem Test nur Bahnhof, das einzige was ich sehe ist, dass man den ersten Test mit FlexUnit deutlich eleganter ([Test(expects="...")]) erledigen könnte. Witziger Weise baut ja Mockito auf ASMock auf: Zitat:
Die Syntax von ASMock ist zwar etwas langwieriger, dafür scheint mir wesentlich weniger Magie enthalten, vielleicht könnte ich sogar nachvollziehen, was da bei so einem Test vor sich geht.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) | |
| | |
| | #4 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Hmm
Also [Test(expects)] ist irgendwie was ganz anderes ... ![]() http://asmock.sourceforge.net/tutorial/ das tutorial dürfte hilfreich sein.
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #5 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Nur so für die Übersicht
Vielleicht noch ein paar Dinge dazu erwähnt zum thema Mockobjekte (hab das Gefühl das es nicht ganz klar ist, vielleicht erkläre ich jetzt auch was ganz banales...) Prinzipiell "record"et man was mit einem Objekt passieren soll und was das Objekt die verschiedenen Aufrufe zurückggeben sollen. Dann lässt man das Mock auf die Welt los und danach sagt man dem Mock das alles abgearbeitet wurde. Fehlt nach dem Abarbeiten ein Schritt fliegt eine Exception - macht die Welt etwas mit dem Mockobjekt da nicht vorgesehen war auch. Abstrakt gesprochen: ActionScript:
Das ist so die Basis wie so Zeugs funktioniert - quasi alle Api ist da gleich gestrickt - manche komplexer, andere weniger komplex. Es gibt z.B. so Features wie "diese Methode wird jetzt x-beliebig of ausgeführt" oder so. Manche wollen auch das man alles nur übers Mockcontrol macht - das ist je nach Geschmack und Intelligenz. Sinn der Sache (noch kurz): Man überprüft ob das MyUtil auch tatsächlich nichts falsches mit dem Objekt macht....
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #6 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Jo, das hatte ich auch so verstanden (hatte das von dir gelinkte Tutorial bereits angesehen) nur kann ich diese Beschreibung in den Beispielen die ich zu Mockito finde nicht wirklich nachvollziehen. Nehmen wir mal den zweiten Test von deinem ersten Link zu diesem Thema hier: PHP-Code: Aber der letzte Schritt Ich sehe keinen Schritt der dem entsprechen würde, was du "Playmode" nennst. Wie kann man verifizieren, ohne es ausprobiert zu haben? Wie kann er eine Methode einmal so, und einmal so aufrufen?Der erste Test in der selben Klasse erscheint mir immernoch hässlich Hat zwar nichts mit Mock-Objekten zu tun, aber die Exception so festzustellen erscheint mir nicht gerade sinnvoll.Denke ich werde zu asmock zurück kehren. Dank der expliziten Einleitung der verschiedenen Phasen finde ich die Tests wesentlich aussagekräftiger.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #7 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Glauben... glauben...
Man braucht bei Operationen ohne Return typ keine Record-Phase. Im klartext: Wenn die Operationen aufgerufen werden geben sie nichts zurück. Es fliegt aber eben auch keine exception. Mockito ist so aufgebaut wenn ichs richtig verstehe: ActionScript:
ActionScript:
Jetzt das ganze noch für operationen betrachted die was zurückgeben sollen: ActionScript:
__________________ Back to community with http://leichtgewicht.at Geändert von kaneda (02-07-2009 um 10:41 Uhr) |
| | |
| | #8 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Nachtrag
Hab eben auch die Java Version mit mehr doku gefunden: http://mockito.org/
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #9 (permalink) |
| thinkin aBout tha lib. Registriert seit: Nov 2001 Ort: Kölle
Beiträge: 1.379
| Documentation
Die Jungs haben ein bischen Documentation dazu online gestellt: http://bitbucket.org/loomis/mockito-...ls/Tutorial1.0 *cheers!*
__________________ Back to community with http://leichtgewicht.at |
| | |
| | #10 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Hey, vielen Dank! Hab in der Zwischenzeit bissel damit gearbeitet, ist wirklich ne feine Sache! Die Syntax ist immernoch gewöhnungsbedürftig, dafür ist das Ergebnis kompakt, und nach einiger Zeit auch lesbar.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |