Vorschläge für eine java-Mock-Datei (mock java.io.Datei)
Hat jemand Vorschläge für ein java-mock File-Objekt?
Ich Bin durch einen fremden Klasse, die müssen eine java.io.File-Objekt als argument.
Ich erhalte die Daten für diese Datei in einem stream über einen webservice (auch eines Ihrer Produkte).
One-Lösung ist zum schreiben dieser Daten in eine Datei und bieten Sie diese der Klasse vor. Dies ist eine Lösung, die ich nicht mag: es nimmt den Vorteil der Verwendung der webservice-statt nur den Download der Datei.
Schneller und effizienter wäre, diese Daten aus dem Speicher in ein Mock-Datei und bietet diese Mock-Datei, um den thirdparty-Klasse.
Wäre es vermutlich ein MockFile erweitern der java.io.Datei und überschreiben alle Funktionen, die die tatsächliche Verknüpfung mit der Datei auf der Festplatte.
Ich kenne die Fremd-benutzt einen stream als input-argument anstelle einer Datei. Dies ist jedoch außerhalb meines Einflusses.
Wie gesagt, dieses Paket scheint zu bieten die Lösung, die ich Suche... wird Sie wissen lassen, ob dies nützlich ist.
Danke für alle Antworten... Es angezeigt mir ein Mock-Datei ist nicht die Lösung... das einzige, was ich daraus machen kann, ist eine erweiterte Datei-Objekt, das erzeugt automatisch eine Datei, und geben Sie diese zu den thirdparty-Klasse. Für das, was ich eigentlich wollte.... der Dritten Klasse haben sollte, um zu akzeptieren ein InputStream als argument. Dies kann aber auch geschehen, indem man den Vorschlag über die wrapper. Ein wenig frustrierend, die thirdparty-Klasse akzeptiert nur eine Datei.
InformationsquelleAutor michel.iamit | 2010-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nur ein Vorschlag, basierend auf mein Verständnis für Ihre Frage.
Ich glaube, Sie müssen etwas tun wie das,
Mock-Objekte machen mehr Sinn, von einer Einheit der Perspektive des testens.
Ihr Ziel ist nicht unit-Tests die Dritte library-Funktion.In der Erwägung, dass es zur Einheit test Methode doSomething (). Also wahrscheinlich können Sie erstellen einen wrapper für die Dritte Funktion.Vielleicht so etwas wie dieses,
Jetzt können Sie erstellen ein mock-wrapper - (implementieren die gleiche Schnittstelle) und benutzen Sie diese mock-wrapper für alle junit-Fällen.
Willkommen und viel Glück.
InformationsquelleAutor chedine
Nicht die getestete Klasse nur die Abfrage der mock-Datei, name, Attribute etc., oder ist es tatsächlich der Versuch, die Datei zu öffnen?
Im ersten Fall, Sie können einfach erstellen Sie Ihre mock mit z.B. EasyMock oder eine entsprechende mocking framework.
Letzteren Fall ist schwierig, und ich fürchte, wenn der input-stream erstellt wird, die intern von der Klasse, Sie haben keine andere Wahl, als tatsächlich ein echtes test-Datei auf die HD.
das problem ist, dass
File
nur "eine abstrakte Darstellung von Datei-und Verzeichnis-Pfadnamen" (aus der Javadoc). So können Sie nicht direkt aus Ihr gelesen - Sie brauchen, um öffnen Sie eineFileInputStream
(oderFileReader
).Ich weiß, so brauchen, um wieder eine Datei inputstream aus diesem mock-Datei-Objekt. Vielen Dank für die Hilfe und denken zusammen, Der Vorschlag unten scheint zu bieten die gesuchte Lösung....
Teil von dem, was Sie vorgeschlagen leeds zu meinem end Fazit, was ich will, nicht gemacht werden kann. Müssen, um tatsächlich eine Datei. Der wrapper kann nur verwendet werden, um die automatische erzeugen einer temp. Datei. Für was soll ich, der fremde, muss eine option hinzufügen, um eine inputstream anstelle der Datei.
Es ist vielleicht nicht die beste Lösung in diesem Fall, aber Sie kann Modell einen input-stream (und so ziemlich alles andere) mit der JMockit mocking-library. Auch wenn sagte, stream innerhalb der Dritten Klasse.
InformationsquelleAutor Péter Török
Könnten Sie laden Sie die 3rd-party-code mit ASM-basierte classloader zuordnet
java.io.File
Ihrer eigenen "fake" - Umsetzung. Es ist ein bisschen Arbeit, und muss sorgfältig durchgeführt... Zum Beispiel müssen Sie auch die KarteFileInputStream
usw.InformationsquelleAutor Stephen Connolly
Verwenden Sie keine Datei (oder jede beliebige externe Abhängigkeit bei Unit tests). Außer mit mocks, Ihre Ansätze führen tests problematisch.
Sehen dieser Artikel javaranch für mehr
InformationsquelleAutor Sumit Bisht