Il nostro team ha centinaia di test di integrazione che colpiscono un database e verificano i risultati. Ho due classi base per tutti i test di integrazione, uno per i test di sola lettura e uno per i test di creazione/aggiornamento/eliminazione. La classe base di solo recupero rigenera il database durante TestFixtureSetup in modo che venga eseguito solo una volta per classe di test. La classe base CUD rigenera il database prima di ogni test. Ogni classe di repository ha una propria classe di test corrispondente.Migliori pratiche di test di integrazione
Come potete immaginare, l'intera operazione richiede un po 'di tempo (si avvicina a 7-8 minuti per correre e crescere rapidamente). Avere eseguito questo come parte del nostro CI (CruiseControl.Net) non è un problema, ma l'esecuzione locale richiede molto tempo e proibisce davvero di eseguirli prima di eseguire il codice.
La mia domanda è: esistono delle best practice per accelerare l'esecuzione di questi tipi di test di integrazione?
Non riesco a eseguirli in memoria (a la sqlite) perché utilizziamo alcune funzionalità specifiche del database (colonne calcolate, ecc.) Che non sono supportate in sqlite.
Inoltre, l'intero team deve essere in grado di eseguirli, quindi eseguirli su un'istanza locale di SQL Server Express o qualcosa potrebbe essere soggetto a errori a meno che le stringhe di connessione non siano tutte uguali per tali istanze.
Come stai ottenendo questo nel tuo negozio e cosa funziona bene?
Grazie!
+1 è più o meno quello che facciamo nel mio lavoro. Sul nostro CIS, i test unitari eseguono ogni checkin e test di integrazione una volta al giorno. – mezoid
dove lavoro eseguiamo i test di integrazione su ogni build. più frequentemente esegui i test di integrazione, meglio è. –
@Ken_Liu - di sicuro. Spesso si tratta di bilanciare i cicli di CPU disponibili sul server CI con il numero di commit per momento. Questo varierà per ogni team di sviluppo/ambiente. – grenade