|
|
|
|||
Mock Creator Alte Version 0.1 |
||||
Home Kontakt Kompetenz Projekte MockCreator Eclipse 2 VisualAge 4 Standalone Version 0.1 Download Xpedition Impressum Feedback![]() ![]() ![]() ![]()
|
Diese Dokumentation ist für die alte Version 0.1 und aus "historischen Gründen" noch enthalten. Bitte nutzen Sie die aktuelle Version. Der Mock Creator wurde von Christian Junghans bei abstrakt entwickelt. Er dient dazu in Java Mockobjekte von Interfaces zu generieren. Er wurde für die Versionen 3 von VisualAge entwickelt. Getestet ist er derzeit für 3.02, 3.53 und 4.0. Zur Zeit ist der MockCreator im Beta- Stadium. Es handelt sich um freie Software, wir übernehmen keine Garantie für irgendwelche Probleme die sich aus seiner Nutzung ergeben. Neue Version in VorbereitungDie neue Version enthält viele kleine Verbesserungen und erlaubt die Formulierung von "Expectation-Blöcken" in beliebiger Reihenfolge. Behalten Sie diese Seiten im Auge oder registrieren Sie sich in der Mailingliste bei yahoogroups. Mitglieder dieser Liste bekommen alle Ankündigungen sofort. Wir haben uns entschlossen, die neue Version zunächst intern zu testen um zu sehen, ob der neu-generierte Code (Blöcke von erwarteten Methodenaufrufen in beliebiger Reihenfolge) sinnvoll verwendet werden kann. Die Veröffentlichung ist für Ende Mai 2002 geplant. Verwendung:Um ein Mockobjekt anzulegen muss lediglich ein Interface in VisualAge angewählt und mit der rechten Maustatste MockObjectCreator/Create MockObject angewählt werden. Im daraufhin erscheinenden Dialog kann das Package gewählt werden, in dem das MockObject erstellt werden soll: FunktionsweiseDer Mock Creator erstellt Mockobjekte, die das gewählte Interface implementieren. Im Test werden die Aufrufe die auf den Mockobjekten erwartet werden in folgender Form angegeben. Wir erwarten in diesem Fall, dass auf einer mitgegebenen Liste die Funktion get(1) aufgerufen wird, d.h. das zweite Objekt aus der Liste ausgelesen werden soll. MockList mockListe = new MockList(); mockListe.expectGet( 1, "Eintrag 1" ); TestKlasse testObjekt = new TestKlasse( mockListe ); testObjekt.zuTestendeMethode(); mockListe.verify(); Zu der gelieferten Software wird eine Testsuite geliefert, die als Beispiel für die Verwendung der generierten Mockklassen dienen kann. Jeder Aufruf einer expect-Methode (hier expectGet) speichert ein Objekt-Array mit Methodenname und Paramaetern in einer ExpectationList -> mockobjects und den Rückgabewert (hier "Eintrag 1") in eine Liste von Rückgabewerten. Jeder Methodenaufruf vom zu testenden Objekt auf dem Mockobjekt vergleicht den Aufruf mit dem zuvor im Test als erwartet angegebenen Aufruf. Um auch Fehlerfälle testen zu können generiert der MockCreator zu jeder Methode im Interface zwei expect-Methoden in der folgenden Form (hier für die Methode "methodCall"):
public void expectMethodCall
( [alle Parameter]
[, Rückgabewert sofern
nicht void]
);
public void expectMethodCall
( [alle Parameter]
[, Throwable der bei Aufruf
geworfen wird]
);
Mit Hilfe der zweiten Version ist es möglich, auch einen Fehlerfall im Test zu simulieren. Die Mock-Implementation gibt in diesem Fall bei Aufruf keinen Rückgabewert zurück, sondern löst die übergebene Exception aus. Hierbei ist die Schnittstelle zu beachten: Sofern nicht im Interface eine Exception deklariert ist, können hier nur RuntimeExceptions und Errors angegeben werden, da sonst während des Tests eine ClassCastException auftritt. Wenn das Interface Exceptions deklariert, können natürlich auch die deklarierten Exceptions als Werte für den Parameter Throwable verwendet werden. Installation
Bevor das erste MockObjekt erstellt werden kann müssen die zwei Klassen aus dem Jar-File de_abstrakt_mock.jar in VisualAge importiert werden. Das Jar-File enthält die Basisklasse für die generierten Mockobjekte und eine ExpectationList die leicht abgewandelt wurde um eine AssertionFailedError zu werfen, wenn auf dem Mockobjekt Methoden aufgerufen wurden, die im Test nicht erwartet werden. Eine weitere Voraussetzung ist der import des packages com.mockobjects das von Sourceforge geladen werden kann. Es enthält die Basisklasse für die ExpectationList. Features
Geplante Features für nächste Releases
Lasst uns doch wissen welche davon ihr für sinnvoll haltet oder was ihr sonst vermisst SupportDer Autor ist erreichbar unter mockcreator@abstrakt.de. Außerdem ist eine Mailingliste auf http://groups.yahoo.com/group/mockcreator eingerichtet. SchwierigkeitenDas speichern der generierten MockObjekte dauert leider sehr lange, grade bei umfangreicheren Interfaces. Lizenz Der MockCreator steht unter der GNU General Public License (GPL), die zu
importierenden Klassen im Package de.abstrakt.mock stehen
unter der GNU Lesser General Public License
(LGPL). Dadurch sind die generierten Klassen auch in
"closed source"-Projekten verwendbar. Und hier noch der Standardtext: Copyright (C) 2001 abstrakt gmbh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|||