2015-08-08 15 views
6

Ich habe mit JUnit und Mocks gearbeitet, aber ich frage mich, was sind die Unterschiede zwischen Mocks und Stubs in JUnit und wie Stubs in JUnit, Java zu verwenden? Und wie Mocks, die EasyMock, Mockito und so weiter haben, was verwendet Stubs in Java?Java - Wie man Stubs in JUnit verwendet

Bitte geben Sie einen Beispielcode für Stubs in Java.

Danke!

+0

Hope this [Antwort] (http://stackoverflow.com/questions/3459287/whats-the-difference-between-a-mock -stub) wird dir helfen –

+0

Ich habe das vorher gelesen und habe nicht geholfen :( – Hamid

+0

Es liegt in der Verantwortung des Fragestellers, Beispielcode und existierende Forschungsergebnisse zu liefern. Diese Frage muss verbessert werden. –

Antwort

10

Um Stubs in Junit zu verwenden, benötigen Sie keine Frameworks.

Wenn Sie einige Schnittstelle wollen Stummel es einfach implementieren:

interface Service { 
    String doSomething(); 
} 

class ServiceStub implements Service { 
    public String doSomething(){ 
     return "my stubbed return"; 
    } 
} 

Dann neues Stub-Objekt erstellen und injiziert es zu Prüfobjekt.

Wenn Sie wollen Stub konkrete Klasse, erstellen Sie Unterklasse und überschreiben stubbed Methoden:

class Service { 
    public String doSomething(){ 
     // interact with external service 
     // make some heavy computation 
     return "real result"; 
    } 
} 

class ServiceStub extends Service { 
    @Override 
    public String doSomething(){ 
     return "stubbed result"; 
    } 
} 
+0

Sie meinen ich gerade schreibe wieder einen Code, aber dieses Mal einfacher und schreibe einen Testfall dafür? eine Schnittstelle, eine Klasse und eine Testklasse? Das ist es? – Hamid

+0

@Hamid ja, du hast Recht. Wenn Sie Mock verwenden möchten, müssen einige Klassen mit externen Diensten oder Datenbanken interagieren. Um diese Interaktionen zu vermeiden, können Sie Stub mit einfacheren Implementierungen als ursprüngliche Klassen schreiben. –

+0

Würdest du mir bitte ein Beispiel geben? Wie ist es einfacher? – Hamid

12

Es den Rahmen oder Technologie nicht meiner Meinung nach wichtig sind. Mocks und Stubs könnten wie folgt definiert werden.

Ein Stub ist ein kontrollierbarer Ersatz für eine bestehende Abhängigkeit (oder Kollaborateur) im System. Mit einem Stub können Sie Ihren Code testen, ohne direkt auf die Abhängigkeit zu achten.

Ein Mock-Objekt ist ein gefälschtes Objekt im System, das entscheidet, ob der Komponententest bestanden oder fehlgeschlagen ist. Dies geschieht, indem überprüft wird, ob das zu testende Objekt wie erwartet mit dem falschen Objekt interagiert hat.

Vielleicht können diese Bilder die Interaktionen zwischen einem Stich und einem Schein verdeutlichen.

Stub Stub

Mock Mock

+0

danke für die Definitionen;) – Hamid

+0

Sie meinen, wenn wir Stubs verwenden, erstellen wir kein Objekt der StubClass? – Hamid

+0

Nach @Sergey Lagutin Antwort. Sie erstellen den Stub, der dem CUT zugeführt werden soll (Code/Klasse im Test) - der Stub ist ein Abhängigkeitsersatz. –