web-dev-qa-db-fra.com

Comment utiliser les stubs dans JUnit et Java?

J'ai travaillé avec JUnit et Mocks mais je me demande quelles sont les différences entre Mocks et Stubs dans JUnit et comment utiliser Stubs dans JUnit, Java? Et en tant que Mocks qui ont EasyMock, Mockito et ainsi de suite, qu'est-ce que Stubs utilise en Java?

Veuillez donner un exemple de code pour Stubs en Java.

12
Hamid

Pour utiliser des stubs dans junit, vous n'avez pas besoin de frameworks.

Si vous voulez bloquer une interface, implémentez-la:

interface Service {
    String doSomething();
}

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

Créez ensuite un nouvel objet stub et injectez-le dans l'objet testé.

Si vous souhaitez tronquer une classe concrète, créez une sous-classe et remplacez les méthodes tronquées:

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";
    }
}
18
Sergey Lagutin

Peu importe le cadre ou la technologie à mon avis. Les simulacres et les talons peuvent être définis comme suit.

Un stub est un remplacement contrôlable d'une dépendance (ou d'un collaborateur) existante dans le système. En utilisant un stub, vous pouvez tester votre code sans traiter directement la dépendance.

Un faux objet est un faux objet dans le système qui décide si le test unitaire a réussi ou échoué. Il le fait en vérifiant si l'objet testé a interagi comme prévu avec le faux objet.

Peut-être que ces images peuvent clarifier les interactions entre un talon et une maquette.

Stub Stub

Mock Mock

24
Michael Baker

En général - Mock signifie implémenter un certain comportement, stubs - il suffit de fournir des données. en d'autres termes, utilisez de préférence la maquette de travail lorsque vous devez démontrer qu'elle change/conserve un état

utilisez le stub Word lorsque vos classes exposent uniquement l'état interne. en effet, vous pouvez utiliser la simulation partout, et le talon n'est qu'un sous-ensemble de la simulation

0
feech