Domanda

Sono interessato a vedere se posso migliorare il modo in cui utilizziamo NUnit in una soluzione di Visual Studio contenente oltre 30 progetti.

Per prima cosa, avresti un gruppo di test per ogni gruppo nella soluzione o proveresti a mantenere basso il numero di gruppi di test? Ho iniziato a creare molti assemblaggi di prova, ma penso che questo ci stia costando molto in termini di tempo di costruzione.

In secondo luogo, quale strategia utilizzate per gestire quei test che durano a lungo o che richiedono una speciale configurazione dell'ambiente? Vorrei scrivere uno script MSBuild che automatizza l'esecuzione dei nostri test unitari, ma deve saltare i test che richiederebbero troppo tempo o non funzionerebbero sulla macchina di compilazione.

È stato utile?

Soluzione

Per rispondere alla tua prima domanda:

Puoi utilizzare categorie per mantenere tutto organizzato in un singolo assemblaggio se è così che vuoi andare. Per quanto riguarda il fatto che potrebbe ridurre i tempi di costruzione, forse rischierei di indovinare, forse non credo che nel complesso sarebbe una grande somma.

Per rispondere al tuo secondo:

Puoi utilizzare le categorie e le [Explicit] e [Ignore] per indicare a NUnit quali test eseguire, e quali test devi dirgli di eseguire prima che lo faccia. Potresti anche voler guardare [Platform] o alcuni degli altri attributi, a seconda di quali siano esattamente i tuoi requisiti su "ambiente".

Ad esempio, è possibile aggiungere un tag esplicito a tutti i test di lunga durata. Quindi dovresti eseguire questi test in modo esplicito, NUnit non li eseguirà automaticamente. Oppure aggiungi tutti questi test a una categoria, quindi quando esegui NUnit, digli di non eseguire esplicitamente quella categoria.

Altri suggerimenti

Per il tuo caso, vorrei limitarti ad alcune opzioni:

  • Consolida i tuoi progetti esistenti su un numero inferiore, consolidando di conseguenza i relativi progetti di prova per loro - Prova a pensare se hai davvero bisogno di 30 progetti (ad esempio, 30 assiemi) o se è meglio combinali semplicemente per facilitare il numero di dipendenze e i tempi di costruzione.

  • Metti i tuoi test nel progetto corrispondente - Sebbene ciò possa suscitare una reazione violenta, pensaci: considerando l'enorme numero di test necessari, il sovraccarico di ottenere un assemblaggio leggermente più grande potrebbe essere vale il sovraccarico ridotto di gestire il doppio del numero di progetti effettivamente necessari.

  • Combina tutti i test unitari in alcuni progetti - Se sei irremovibile nel mantenere ogni gruppo pulito e separato, puoi semplicemente scegliere di combinare tutti i test unitari, probabilmente in termini di rilevanza reciproca.

Di conseguenza, potresti anche effettuare configurazioni di soluzioni che non includano test unitari, se i tempi di costruzione sono così importanti per te. Ciò è particolarmente utile se stai eseguendo dei test su richiesta . Se stai utilizzando l'integrazione continua, non dovrebbe essere un problema: puoi avere più configurazioni CI, alcune delle quali includono test di costruzione, altre no.

Questa è un'ottima domanda e solleva alcune preoccupazioni che ho riguardo alla gestione di una vasta serie di test unitari per progetti di lunga durata e di grandi dimensioni.

La mia strategia è quella di avere un progetto di unit test per ogni progetto nella tua soluzione che sia relativo al business o al framework. I test unitari sono scarsamente adatti a testare gli aspetti dell'interfaccia utente di un progetto e generalmente lo lascio ai test programmati. Il progetto viene creato utilizzando un server di integrazione continua (CI) che viene attivato ogni volta che uno sviluppatore commette un pezzo di lavoro. Il server CI esegue anche tutti i test unitari e genera statistiche sulla copertura dei test unitari. L'ambiente CI utilizza MSBuild per creare la soluzione.

Nel tempo vale la pena valutare se tutti i test unitari sono necessari. Gran parte dello sforzo di test di regressione si sposterà su test di script e il sovraccarico di mantenimento dei test unitari può essere costoso. Idealmente, vorrei che tutti i test unitari fossero mantenuti per tutta la durata del progetto, ma a volte le spese generali di manutenzione possono essere proibitive. Come regola pratica, i test delle unità vengono mantenuti per le regole aziendali e il framework della soluzione ma non per l'interfaccia utente, i report o il flusso di lavoro. Ovviamente questo dipenderà dai dettagli del tuo progetto.

A parte questo, troviamo TestDriven.Net per essere un eccellente front-end del componente aggiuntivo VisualStudio per NUnit , gratuito per uso / studenti open source.

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