2010-01-24 17 views

risposta

49

Un oggetto Mock è utilizzato per il test dell'unità. Se si dispone di un oggetto di cui si desidera testare i metodi e tali metodi dipendono da qualche altro oggetto, si crea una simulazione della dipendenza piuttosto che un'istanza effettiva di tale dipendenza. Questo ti permette di testare il tuo oggetto da solo.

I framework Java comuni per la creazione di oggetti mock includono JMock e EasyMock. Generalmente consentono di creare oggetti mock il cui comportamento è possibile definire, in modo da sapere esattamente cosa aspettarsi (per quanto riguarda i valori di ritorno e gli effetti collaterali) quando si chiamano metodi sull'oggetto fittizio.

Ad esempio, un caso di utilizzo comune potrebbe essere in un'applicazione MVC, in cui si dispone di un livello DAO (oggetti di accesso ai dati) e un controller che esegue la logica aziendale. Se si desidera testare il controller unitamente e il controller ha una dipendenza da un DAO, è possibile creare una simulazione del DAO che restituirà oggetti fittizi al controller.

Una cosa importante da notare è che solitamente gli oggetti mock implementano la stessa interfaccia degli oggetti che stanno deridendo - questo consente al codice di gestirli tramite il tipo di interfaccia, come se fossero istanze di la cosa reale.

+2

solo per il mio interesse: Da dove viene il nome "finto" provengono da? –

+4

Bene, la stessa parola "mock" significa "falso". Sembra un po 'meglio di "oggetto falso". :) – Jeff

+23

Mock è una parola inglese che significa "imitare" o "imitare". Gli oggetti fittizi imitano le dipendenze dell'oggetto che stai testando. – danben

1

Gli oggetti fittizi sono quelli utilizzati nelle prove di unità. che ti aiuta a testare l'unica funzionalità che vuoi testare. perché tutte le dipendenze possono essere raggiunte prendendo in giro quegli oggetti dipendenti. Quindi, se il test viene superato, sarai sicuro che la tua unità in prova sia corretta.

Quindi è il test writer che li ha creati. È possibile utilizzare EasyMock come uno strumento per Mocking.

4

preventivo da qui: http://easymock.org/

test delle unità è la sperimentazione di unità software in isolamento. Tuttavia, la maggior parte delle unità non funziona da solo, ma esse collaborano con altre unità. Per provare l'unità in isolamento, dobbiamo simulare i collaboratori nel test . Un oggetto Mock è un sostituto di prova per per un collaboratore. È configurato per simulare l'oggetto che sostituisce in modo semplice.

ad esempio, se si desidera testare le chiamate http è necessario creare oggetti di richiesta reali, completi di tutte le loro dipendenze. Questo può spesso richiedere un grande sforzo, da qui l'uso di oggetti derisi che forniscono un percorso più veloce per creare una resa accurata dell'oggetto che ti serve, senza la lunga catena di dipendenze.

5

Gli oggetti fittizi consentono di simulare e verificare oggetti reali, senza effettivamente eseguire il codice reale in tali oggetti. È possibile impostare una simulazione per restituire risultati specifici sulle chiamate ai metodi, è possibile verificare che un metodo sia stato o non sia stato chiamato e altre cose interessanti.

Mockito è una libreria di oggetti mock Java molto semplice e diretta.

14

Mocking e Mock Objects non è specifico di Java.Gli oggetti fittizi sono un'unità che verifica la tecnica in cui un blocco di codice viene sostituito da false implementazioni che emulano il codice reale . Questo aiuta a scrivere test unitari mirati alla funzionalità fornita dalla classe sotto test.

controllare questi articoli che forniscono una buona introduzione al concetto di beffardo:
Mock Objects (PDF)
Endo-Testing: Unit Testing with Mock Objects (PDF)

Se siete alla ricerca di un quadro finta di unit testing in Java, dai un'occhiata a: Mockito. L'ho trovato utile per i miei test unitari.

+1

La nostra carta "Mock Roles, Not Objects" è migliore della carta di test Endo originale: http://www.mockobjects.com /files/mockrolesnotobjects.pdf –

Problemi correlati