2015-08-08 13 views
6

Ho lavorato con JUnit e Mocks ma mi chiedo, quali sono le differenze tra Mock and Stub in JUnit e come utilizzare Stub in JUnit, Java? E come Mock che hanno EasyMock, Mockito e così via, cosa utilizza Stub in Java?Java - Come utilizzare gli stub in JUnit

Si prega di dare qualche esempio di codice per Stub in Java.

Grazie!

+0

Spero che questo [risposta] (http://stackoverflow.com/questions/3459287/whats-the-difference-between-a-mock -stub) ti aiuterà –

+0

L'ho letto prima e non ha aiutato :( – Hamid

+0

E 'responsabilità del questionario fornire codice di esempio e ricerca esistente che hanno fatto.Questa domanda ha bisogno di miglioramento –

risposta

10

Per utilizzare gli stub in junit non è necessario alcun framework.

Se vuoi stub alcune interfaccia solo implementarlo:

interface Service { 
    String doSomething(); 
} 

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

Poi creare nuovo oggetto stub e iniettare all'oggetto testato.

Se vuoi stub classe concreta, create sottoclasse e sostituire i metodi sradicate:

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

vuoi dire io appena Scrivi di nuovo del codice, ma questa volta è più semplice e scrivi una prova per questo? un'interfaccia, una classe e una classe di test? Proprio così? – Hamid

+0

@Hamid sì, hai ragione. Se vuoi usare mock, suppongo che alcune classi debbano interagire con servizi o database esterni. Per evitare queste interazioni potresti scrivere stub con implementazioni più semplici rispetto alle classi originali. –

+0

ti dispiacerebbe darmi un esempio? Com'è più facile? – Hamid

12

Non importa il quadro o la tecnologia a mio parere. Mock e stub potrebbero essere definiti come segue.

Uno stub è una sostituzione controllabile per una dipendenza esistente (o un collaboratore) nel sistema. Utilizzando uno stub, puoi testare il tuo codice senza occuparti direttamente della dipendenza.

Un oggetto fittizio è un oggetto falso nel sistema che decide se il test dell'unità ha superato o fallito. Lo fa verificando se l'oggetto in prova ha interagito come previsto con l'oggetto falso.

Forse queste immagini possono chiarire le interazioni tra uno stub e un finto.

Stub Stub

Mock Mock

+0

grazie per le definizioni;) – Hamid

+0

vuoi dire, quando usiamo gli stub, non creiamo un oggetto di stubClass? – Hamid

+0

Come risposta @Sergey Lagutin. Si crea lo stub da alimentare al CUT (codice/classe sotto test) - lo stub è una sostituzione delle dipendenze. –

Problemi correlati