L'unità sta testando l'obiettivo principale di MVC Pattern?

13

Recentemente in un'intervista, una delle domande era "Perché usiamo MVC?" Ho appena risposto che è molto più vicino a come, molti dei sistemi del mondo reale sono! Ha spiegato i vantaggi che ne derivano in termini di manutenibilità, scalabilità, ecc. Ma non erano convinti e alla fine mi hanno detto che MVC è utilizzato principalmente perché "consente un facile test delle unità".

Anche se so che il loro è un punto valido, dubito ancora che sia la ragione principale perché (i) anche se decido di non scrivere UnitCase, MVC è una scelta probabile (ii) Molti sistemi GUI in cui le Unit Testcases sono non segue MVC.

Quindi la domanda è "L'unità sta testando l'obiettivo principale di MVC Pattern?"

EDIT: presumo che possano menzionare la facilità di Test Driven Development / scrittura di test NUnit. Ciò è dovuto al fatto che è possibile scrivere i test per il modello (a condizione che la vista rifletta esattamente le modifiche di stato del modello), per favore correggetemi se ho torto.

    
posta WinW 21.07.2011 - 08:57
fonte

5 risposte

33

L'obiettivo principale sarebbe la "separazione delle preoccupazioni", poiché il modello, la vista e il controllore hanno tutti responsabilità distinte.

L' autore del documento originale Xerox PARC afferma che:

The essential purpose of MVC is to bridge the gap between the human user's mental model and the digital model that exists in the computer.

Se l'unit test fosse l'obiettivo principale, si sarebbe in grado di testare facilmente le viste unit-test. Uno sguardo al panorama dei progetti / quadri di test unitari rivelerebbe che è del tutto contrario all'affermazione fatta. Normalmente si utilizzano test di integrazione e test funzionali per testare la vista.

    
risposta data 21.07.2011 - 09:25
fonte
14

Secondo me, la risposta è un fermo "no". Forse questo è stato il principale vantaggio che è stato osservato in questa specifica organizzazione, ma non lo chiamerei l''obiettivo primario'.

Immagino che non sarebbe poi così difficile implementare MVC in un modo, è davvero difficile da testare l'unità (diamine - il modo in cui l'ho fatto per la prima volta era difficilmente testabile)

D'altro canto, si potrebbe dire che praticamente qualsiasi schema (ad esclusione di cose come Singleton) facilita i test unitari, dal momento che spesso promuovono il disaccoppiamento - ma è il loro 'obiettivo primario'? Quasi.

    
risposta data 21.07.2011 - 09:02
fonte
12

MVC (proprio come la maggior parte dei modelli di progettazione conosciuti) era ancora prima che venissero resi noti i test unitari. Il libro GoF è stato pubblicato nel 1994 e stavano solo documentando i modelli che sono stati in uso per anni (se non decenni) prima. (E non si fa menzione dei test unitari in esso.) Per quanto riguarda il test delle unità, non riesco a individuare un momento preciso in cui è diventato "pubblico" - ne ho letto personalmente in articoli relativi a Extreme Programming e al primo libro di XP è uscito nel 1999.

Quindi ovviamente i test unitari non possono essere l'obiettivo principale di inventare / documentare i modelli - mentre è giusto dire che i modelli, se applicati bene, facilitano notevolmente il test unitario.

    
risposta data 21.07.2011 - 10:52
fonte
2

Penso che no, la facilità di test delle unità è uno dei vantaggi, ma fa parte di una serie di vantaggi quando si utilizza MVC insieme ai motivi elencati. Dire che c'è un solo motivo principale per usare MVC è un errore. Sembra che la società in questione scelga MVC per facilitare il test delle unità, quindi pensano che sia la ragione principale. Personalmente, le mie ragioni per utilizzare MVC sono la sua semplicità rispetto ai moduli Web che semplificano la progettazione e la manutenzione, ma ogni individuo / azienda avrà le proprie ragioni per utilizzare qualsiasi tecnologia.

    
risposta data 21.07.2011 - 09:16
fonte
0

Nel mondo ASP.NET MVC, molti miglioramenti a ASP.NET sono stati inclusi nel framework stesso. Lo scopo principale di questo modello di progettazione è di isolare la logica di business dall'interfaccia utente per concentrarsi su una migliore manutenibilità, una migliore testabilità e una struttura più pulita per l'applicazione.

ASP.NET MVC ha alcune funzionalità che lo rendono la migliore opzione per scegliere se hai bisogno di uno o più dei seguenti elementi:

Un alto livello di controllo sull'HTML generato : a differenza dei Web Form, le viste in ASP.NET MVC restituiscono l'HTML esattamente come gli si dice. Recentemente, i Web Form sono stati migliorati in quest'area, ma non hanno ancora il livello di controllo di MVC.

Test dell'unità più semplice : con ASP.NET MVC, è molto facile seguire modelli di test come lo sviluppo basato sui test (TDD). A causa del complesso ciclo di vita degli eventi in Web Form, oltre a un framework basato su controlli, TDD è molto più semplice con MVC.

Separazione delle preoccupazioni : si riferisce al fatto che tutti gli aspetti del sistema sono chiaramente separati l'uno dall'altro. A causa del modello implementato, un'applicazione MVC è divisa in parti distinte e liberamente associate (modello, viste e controllori), il che semplifica la manutenzione.

Alcuni degli altri vantaggi sono:

• Lo stesso pattern MVC semplifica la gestione della complessità separando chiaramente la funzionalità dell'applicazione in tre parti principali: il modello, la vista e il controller.

• Le applicazioni Web ASP.NET MVC non utilizzano lo stato di visualizzazione o i moduli basati su server. Ciò rende il framework MVC ideale per gli sviluppatori che desiderano il pieno controllo del comportamento di un'applicazione. Lo stato di visualizzazione può diventare molto grande, il che è un problema per dispositivi come gli smartphone che girano su reti lente (la trasmissione di tutte queste informazioni può essere molto lenta). In una pagina Web Form, è possibile avere solo uno per pagina. Questa è una restrizione piuttosto importante. In MVC non esiste una restrizione di questo tipo, ovvero puoi avere tutti gli elementi che desideri.

• ASP.NET MVC offre un supporto migliore per lo sviluppo basato sui test (TDD).

• ASP.NET MVC funziona bene per le applicazioni Web supportate da grandi team di sviluppatori e per i web designer che necessitano di un alto grado di controllo sull'HTML. Elaborazione richiesta MVC ASP.NET

    
risposta data 06.01.2015 - 12:36
fonte

Leggi altre domande sui tag