Domanda

Ho letto molti articoli su test di unità. La maggior parte degli articoli ha detto che non dovremmo utilizzare più di un oggetto fittizio in un test, ma non riesco a capire perché. A volte abbiamo davvero bisogno di più di un oggetto fittizio in un test.

È stato utile?

Soluzione

Si dovrebbe aggiungere il numero di deride come necessario isolare la classe in prova. Avete bisogno di un mock per ogni dipendenza che non dovrebbe essere parte del test.

A volte si mettono due o tre classi insieme in un test, per semplicità, perché costruire qualcosa di simile a un componente e sono altamente accoppiati. Tutto il resto deve essere preso in giro.

So che questo "best practice" per avere un solo finta e anche non lo capisco. Nei nostri test di unità, abbiamo molti prende in giro, alcuni mock ambientali vengono impostati dal framework di test che ho scritto (ad es. TransactionService, SecurityService, SessionService). C'è solo una cosa da considerare, come Gishu già accennato nella sua risposta, molti mock sono un'indicazione di elevata dipendenza. Sta a voi di prendere in considerazione quando è troppo. Abbiamo molti piccoli interfacce, che richiede molti mock nei test.

Per attivare la risposta in giro, si dovrebbe non beffe una dipendenza quando:

  • Si tratta di una parte molto accoppiata della classe in prova, come una classe interna, classe privata ecc.
  • Si tratta di un comune a .NET Framework come una collezione e simili
  • Per scrivere un test di integrazione per verificare esattamente l'interazione con quella classe. (È ancora prendere in giro tutto il resto e avete ancora unit test per ogni classe coinvolta in isolamento.)
  • E 'solo costoso prendere in giro una certa classe. Fate attenzione a decidere come troppo costoso, deride sembrano essere difficile da impostare, ma si rivelano essere un gioco da ragazzi rispetto ai problemi di manutenibilità che avrete con utilizzando le classi reali. Ma ci sono alcune strutture e tecnologie che non stanno attuando contro interfacce e sono molto difficili da prendere in giro. Se è troppo costoso per mettere questo classi del framework dietro la propria interfaccia, è necessario vivere con loro nei test.

Altri suggerimenti

È possibile avere più di un finto in un test di unità a seconda del contesto.

Tuttavia penso che cio 'gli articoli' potrebbe essere accennando a è

  • prevenzione del over-beffardo . Quando un'unità test prende in giro tutti i collaboratori, si lascia la porta aperta; lo scenario potrebbe non riuscire quando si sostituisce collaboratori reali. Riducendo al minimo il numero di schernisce e l'utilizzo di collaboratori veri e propri, per quanto fattibile / possibile, a ridurre al minimo il rischio.
  • Alta accoppiamento avvisi:. Se vi trovate a dover prendere in giro un sacco di collaboratori inorder per scrivere un test di unità, potrebbe essere un odore di progettazione che indica che si soffre di accoppiamento

Non sono sicuro di quali articoli ti riferisci, ma in genere hanno un oggetto fittizio per ogni dipendenza per la classe in prova.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top