2016-01-05 13 views
11

Mi sto godendo il nuovo strumento di creazione in Visual Studio Online. Mi consente di fare quasi tutto ciò che faccio il mio server di build locale. Ma una cosa che mi manca sono i test del database di integrazione: per ogni esecuzione ricostruisco il database di test da script ed eseguo test DB contro di esso.Test di integrazione del database in Visual Studio Online

In Visual Studio Online non riesco a trovare alcuna istanza di database disponibile per le mie esigenze.

Ho provato a creare il database SQL di Azure (tramite PowerShell) per ogni esecuzione di build e quindi cancellarlo al termine della compilazione. Ma ci vuole tempo per sempre (confrontandolo con il resto del processo di costruzione) per creare un database. E anche quando gli script di PowerShell sono terminati, il database non è ancora pronto ad accettare richieste - ho bisogno di verificare costantemente se è effettivamente pronto. Quindi questo scenario diventa troppo complesso e non affidabile.

Esistono altre opzioni per eseguire test di integrazione del database (SQL Server) in Visual Studio Online?

Aggiornamento: Penso di non essere molto chiaro di cosa ho bisogno - Ho bisogno di un'istanza di SQL Server gratuita (molto economica) per connettersi a quell'esecuzione su build agent in VSO. Qualcosa come SQL Express o SQL CE o LocalDB, dove posso connettermi e ricreare il database per eseguire test C# contro. Ricreare il database o eseguire test non è un problema, avere una stringa di connessione valida è un problema.

Aggiornamento Ottobre 2016:I've blogged su come lo faccio test di integrazione in VSTS

+0

non relative a Visual Studio, ma: hai provato istantanee? Si crea il database 1 volta, si crea uno snapshot prima dei test, quindi su ogni build si esegue il 'RESTORE DATABASE [dbname] FROM DATABASE_SNAPSHOT' – Ingaz

+0

@Ingaz Per fare uno snapshot, ho bisogno di un database per funzionare su qualcosa - un server. Questo è quello che sto cercando - un server dB su un'istanza di build – trailmax

risposta

18

I server di build TFS sono preinstallati con MSSQL Server 2012 e MSSQL Server 2014 LocalDB.

Fonte:TFS Service - Software on the hosted build server

Quindi, basta inserire il seguente one-liner in eventi post-generazione della soluzione per creare un MYTESTDB esempio LocalDB per le vostre esigenze. Ciò ti consentirà di connetterti a (LocalDB)\MYTESTDB a eseguire correttamente i test di integrazione del database.

"C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" create "MYTESTDB" 12.0 -s 

Fonte:SqlLocalDB Utility

+0

Ora stiamo parlando !! Grazie per questo - è esattamente quello che stavo cercando. Farò una prova durante il fine settimana e accetterò la tua risposta se tutto funziona. – trailmax

+0

Ho visto questo elenco di software installato, ma non ero sicuro di come accedere all'accesso a SQL Server. C'è documentazione disponibile da qualche parte? Ho letto il blog collegato, ma non era specifico per VSO e ulteriori dettagli disponibili. – trailmax

+1

Per quanto ne so non esiste una tale documentazione, è necessario utilizzare la documentazione del software specifico. "SqlLocalDB create" è il modo in cui di solito lavori con LocalDB. –

1

V'è un'estensione "Redgate SQL CI" per VSTS nel mercato che si può provare. Vedere questo link per ulteriori informazioni:

All'interno l'estensione, ci sono quattro azioni disponibili:

• Build - costruisce il database in un pacchetto NuGet dal database delle cartelle script nel controllo del codice sorgente

• test - esegue i test tSQLt contro il database

• Sync - sincronizza il pacchetto a un database di integrazione

• Pubblica - pubblica il pacchetto su un flusso NuGet

+0

Grazie per la risposta, Eddie. Ma questo non è esattamente ciò di cui ho bisogno. In realtà ho bisogno di un database per eseguire test contro. Ho tutto il codice/infrastruttura per eseguire i test. – trailmax

0

È necessario eseguire i test di integrazione (qualsiasi cosa che richieda un'istanza dell'applicazione) da eseguire in un ambiente come parte della propria pipeline di rilascio.

Nella tua build fai solo i test di compilazione e unità. Se questo compete, dovresti attivare una Release e come parte della tua pipeline di rilascio il primo passo dovrebbe essere quello di distribuire il tuo database su un server azzurro.

Invece di provare a utilizzare SQL Azure, è possibile creare una VM in azzurro che esiste già in cui è installato il server SQL. Utilizzare lo scripting remoto per distribuire il database ed eseguire i test.

Anche se non si stanno utilizzando gli strumenti di rilascio per rilasciare questo funzionerebbe per voi.

+0

Mi dispiace, questa non è una domanda A-B. I test DB fanno parte della mia pipeline di release e avere una VM non lo rende meno costoso o più veloce da eseguire. Ho iniziato da una macchina virtuale con SQL Server, quindi spostato su un SQL di Azure e entrambi questi scenari non funzionano abbastanza per questo progetto. – trailmax