2012-02-04 28 views
9

Sono abbastanza nuovo per il test dell'unità. Sono a scuola e attualmente sto prendendo progetti junior. Abbiamo un'applicazione web da scrivere. Useremo C# e asp.net. Attualmente stiamo facendo tutti i requisiti, l'architettura e io sono responsabile della garanzia della qualità e della scelta del framework giusto. Abbiamo un sacco di documenti da completare e sto cercando di completare il mio piano di assicurazione della qualità.Test unitario su asp.net

Non sono sicuro di cosa utilizzare per il test dell'unità. Anche se useremo asp.net, non penso che abbiamo la necessità di usare MVC a questo punto. Per semplicità, dovremmo semplicemente utilizzare la funzionalità integrata di Visual Studio per generare un test di unità ASP.NET? Oppure, dovrei esaminare l'uso di Nunit? o qualcosa del genere?

Ricordare che questo è solo un progetto scolastico. Il nostro team di 4 dovrà eseguire tutti i test unitari e la maggior parte di noi non avrà molta esperienza al riguardo.

Quali sono i tuoi pensieri?

risposta

8

Per semplicità, dovremmo semplicemente utilizzare Visual Studio integrato nella funzionalità per generare un test di unità ASP.NET?

No, è completamente inutile. Bene, potresti usarlo per il tuo progetto scolastico o qualcosa del genere ma non ti illudere che stai facendo test unitari.

Oppure, devo esaminare Nunit? o qualcosa del genere?

Sì, sicuramente. Ma per riuscire a testare con successo l'applicazione ASP.NET, deve essere progettato in modo tale che i diversi livelli siano debolmente accoppiati tra loro e possano essere riutilizzati separatamente. Ciò si ottiene facilmente utilizzando le astrazioni (interfacce e classi astratte) invece di lavorare con le implementazioni concrete. Ricorda inoltre che qualsiasi codice che dipende da HttpContext non può essere facilmente testato unitamente. Il modo migliore è quello di lavorare con le astrazioni fornite da ASP.NET come HttpContextBase, HttpRequestBase, HttpResponseBase, ... che può facilmente essere deriso in un test unitario.

+0

Darin, puoi ancora avere un accoppiamento debole con le classi concrete, no? In altre parole, se il livello aziendale utilizza le classi del livello dati, il livello dati può ancora essere testato in modo isolato dal bl. –

+1

@Shark, no, il tuo livello aziendale ora è fortemente accoppiato al tuo livello di accesso ai dati che rende impossibile il test dell'unità da solo. Sì, puoi testare l'unità del tuo livello dati che non dipende da nessun altro livello (diverso dal database). Quindi per rispondere alla tua domanda 'puoi ancora avere un accoppiamento debole con le classi concrete, però, no ', la risposta è' no, non puoi avere un accoppiamento debole con le classi concrete '. –

+0

Ok, capisco cosa stai dicendo ora. +1 sulla tua risposta, a proposito. È così che progettate la maggior parte delle vostre soluzioni a più livelli? Mai nessuna classe concreta che attraversa un livello, solo interfacce e classi astratte? –

1

Se si desidera scrivere test di unità, è necessario separare la logica dalla presentazione. MVC è eccezionale, il che rende molto più testabile l'unità rispetto alle webform. Non è impossibile testare le webform, solo più difficile.

In definitiva, tuttavia, è sufficiente tenere a mente i principi SOLID e assicurarsi di utilizzare liberamente le interfacce per tutto il progetto in modo da poterli prendere in giro.

NUnit contro MSTest non è davvero un problema. C'è più o meno parità di funzionalità tra i due, e il lato positivo di MStest è che è tutto costruito direttamente in Visual Studio. Vai con quello che vuoi.

Mi consiglia di leggere il libro The Art of Unit Testing, pure.

A seconda delle dimensioni e della portata del progetto, potrebbe essere utile esaminare un'inversione del framework di controllo, ad esempio Ninject, per unire tutte le dipendenze.

+0

Ho fatto una lezione di design pattern. Penso che potremmo usare qualche tipo di schema. Il progetto è solo un'app Web online che crea un'applicazione di lavoro automatizzata per una catena di vendita al dettaglio. Sono ancora confuso su cosa usare. Se vado con asp.MVC dovrei andare con la funzione VS integrata? –

+0

@ricelated Non sono sicuro di cosa intendi per "funzionalità VS integrata". Intendi il modello di progetto MVC? Se è così, allora si. MVC è più testabile e flessibile delle webform, ma richiede un po 'più di lavoro dallo sviluppatore. –

+0

In VS c'è una scheda di prova. Se fai clic su questo ti viene visualizzata una nuova finestra di test e hai alcune selezioni: test dell'unità di base. Test generico, test di carico, test unitario, ecc. –

0

Accetto con entrambi. Sicuramente e problema se le tue cose sono troppo strettamente accoppiate (integrate e basate l'una sull'altra). Rompi l'accoppiamento in requisiti di interfaccia non utente che è possibile inviare tutti i test, e io sicuramente uso NUnit con C#, ma il nostro lavoro di sviluppo è con WPF.Tutte le funzioni di gestione dati e statiche possono essere testate per confermare limiti, valori nulli, parametri mancanti/non validi, risultati attesi rispetto a ciò che VERAMENTE viene restituito. Non fatto bene potrebbe mettere male sul tuo sito rapidamente altrimenti.

+0

Penso che avrò una seconda occhiata all'utilizzo di MVC. Ho preso un corso di design pattern e penso che potremmo incorporarlo. Guarderò in NUnit. –