Hoe gebruik ik stubs in JUnit en Java?

Ik heb met JUnit en Mocks gewerkt, maar ik vraag me af, wat zijn de verschillen tussen Mocks en Stubs in JUnit en hoe Stubs te gebruiken in JUnit, Java?
En als Mocks met EasyMock, Mockito enzovoort, wat gebruikt Stubs in Java?

Geef een voorbeeldcode voor Stubs in Java.


Antwoord 1, autoriteit 100%

Naar mijn mening maakt het framework of de technologie niet uit. Mocks en stubs kunnen als volgt worden gedefinieerd.

Een stub is een beheersbare vervanging voor een bestaande afhankelijkheid (of bijdrager) in het systeem. Door een stub te gebruiken, kunt u uw code testen zonder direct met de afhankelijkheid om te gaan.

Een nep-object is een nep-object in het systeem dat bepaalt of de unit-test is geslaagd of mislukt. Het doet dit door te verifiëren of het te testen object zoals verwacht interactie had met het nepobject.

Misschien kunnen deze afbeeldingen de interactie tussen een stomp en een mock verduidelijken.

Stub

Mock


Antwoord 2, autoriteit 66%

Om stubs in junit te gebruiken heb je geen frameworks nodig.

Als je een interface wilt afstompen, implementeer het dan gewoon:

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

Maak vervolgens een nieuw stub-object en injecteer het in het geteste object.

Als je een concrete klasse wilt stuben, maak dan een subklasse en overschrijf 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";
    }
}

Antwoord 3

In het algemeen – Mock betekent een bepaald gedrag, stubs – gewoon een aantal gegevens leveren. Met andere woorden die de voorkeur hebben, gebruik het werkvermogen wanneer u moet aantonen dat het verandert / houdt een staat

Gebruik de Word-stomp wanneer uw lessen alleen de interne toestand blootleggen. Inderdaad kunt u overal spot gebruiken en stub is slechts subset van mock

Other episodes