2010-03-16 12 views
11

Ho fatto una ricerca nel forum e non ho trovato una domanda simile. Sto cercando di prendere una decisione definitiva sul nostro scherno framework di scelta che va avanti come una buona pratica - Ho deciso su Moq ... fino a poco tempo fa ho scoperto che MS ha finalmente creato una struttura beffarda chiamata Moles che sembra funzionare in modo simile digitare TypeMock tramite il profiler API sexyness ecc.Chiunque usi Moles/Pex in produzione?

C'è un milione di thread "NMock vs Moq vs TypeMock vs Rhino ...." qui. Ma non ho mai visto Moles coinvolto. Anzi, non sapevo nemmeno se fosse esistito fino a poco tempo fa. Qualcuno lo sta usando? In produzione? Chiunque scarica la loro vecchia struttura beffarda per questo, e se sì, quale? Come è stato paragonato ai quadri di derisione che hai usato?

grazie .. ps, stiamo utilizzando VS2008 e stiamo passando al 2010 a breve.

+0

la mia opinione era che Moles non è solo una struttura beffarda. È più di un intercettore - quello che non mi piace di Moles: genera più codice. È più di un nastro adesivo - non ti porta a ripulire il tuo design. per esempio. Just Mole DateTime.Ora già! non ti costringe a mettere la responsabilità dietro a un ruolo di orologio. D'altra parte, Moles potrebbe essere un'opzione facile se hai a che fare con una pila esistente di codice legacy. – Gishu

+2

Moles è stato sostituito con Fakes http://msdn.microsoft.com/en-us/library/hh549175(v=vs.110).aspx in visual studio 2012 –

risposta

7

Sono nello stesso scenario in cui ti trovi, quindi mi piacerebbe commentare le mie esperienze.

Sia Typemock che Moles hanno l'obiettivo dell'isolamento in mente. Soprattutto per quelle fastidiose classi sigillate, metodi non virtuali.

Credo che un framework di isolamento, come menzionato sopra, sia necessario soprattutto se ci si trova nelle fasi successive dello sviluppo e/o non si dispone di/poco controllo del codice di base.

Questi sono i vantaggi in Typemock, non ho ancora scoperto con Moles

  • Il supporto per strumenti di copertura del codice (NCover e Partcover)
  • Supporto per intercettare/verificare sul privati ​​(metodi/proprietà) [ sì questo è controversa]
  • prodotto più lucido, e in esecuzione veloce con API intuitiva (ancora scherzi con Moles a lavorare anche a destra)

spero Moles Matur es in prodotto rilasciato, ma l'inizio del mio armeggiare con esso sembra non essere diverso rispetto ad altri progetti di ricerca della MS; di solito non lucidato, ma sembra essere la natura di quel tipo di progetti.

+0

grazie per le informazioni – dferraro

7

Penso che le talpe stiano prendendo in giro il livello successivo, è molto più potente.

Cosa intendi con "in produzione" ?. Le talpe sono utili solo nei test unitari. Ha un impatto notevole sulle prestazioni e consente anche la produzione di codice non sicuro (mai pensato di sostituire una funzione IsAuthorized per restituire true?).

Moles sono utilizzabili sia nel 2008 e nel 2009.

Spero che questo risponde alla tua domanda.

+0

grazie. Intendo scrivere il codice di produzione usando TDD usando Moles quando ho scritto 'Production' – dferraro

7

Moles viene utilizzato internamente in Microsoft da diversi team di prodotto.

1

Moles and Pex è paradigm shift !! è troppo aspettarsi da un frameowrk gratuito. Fino ad ora non ho trovato alcuna ragione per non usarlo a meno che non si abbia codice di codice cross ma fintanto che. I moles e Pex è sicuramente la risposta !!

1

Beh, potrebbe essere, ci sono alcuni problemi di threading che sembrano ritagliare nel mezzo, è molto difficile da riprodurre. Praticamente si blocca VS 2010 quando si tenta persino di inserire un punto di interruzione nel processo allegato. È successo poche volte per me non solo su una sola macchina, ma in seguito scomparso per ragioni sconosciute.

Mentre la deviazione avviene, il debugging è una danza tra il codice e la deviazione che potrebbe essere difficile far fronte inizialmente e se c'è un'eccezione durante tale, è solo difficile da rompere con l'eccezione.

L'auto generato test e la sua PUTs- diificult di cogliere ciò che messaggio che stanno cercando di trasmettere cioè se il modello di codifica essere modificata o qualcos'altro, anche se tenta di generare prova parametrizzata sulla base di interfaccia, ma a seconda della classe in prova , i PUT auuto gen potrebbero non essere il modo migliore per sfruttare i test parametrizzati.

Nel complesso, c'è una curva di apprendimento più il quadro richiederà anche un po 'di tempo per maturare. Lato positivo, il concetto è buono e il costo di mantenimento (se implementato correttamente) e il tempo di risposta del team che supporta PEX è davvero positivo, a volte si ottiene una risposta utile entro 2 ore sul forum PEX.

migliori saluti Yogesh Pawar

0

Se per "in produzione" intendi usarlo su un prodotto che viene utilizzato nella produzione di allora assolutamente!

Utilizziamo Moles per isolare la funzionalità nei nostri test di unità su un progetto di profilo molto elevato per società come Google e McDonalds. Naturalmente, i test unitari non vengono eseguiti sul server di produzione, quindi Moles non viene mai distribuito in produzione.