Condividi tramite


Procedura dettagliata: creazione ed esecuzione di uno unit test del database

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrato come creare uno unit test del database per il test di un semplice script T-SQL (Transact-SQL). Prima di creare uno unit test del database, è necessario avere o creare un progetto di database per il database che si desidera testare. È inoltre necessario che il database contenga dati affinché il test possa restituire risultati significativi.

Nella prima procedura, si crea un progetto di database e si importa lo schema del database Northwind. Dopo avere creato il progetto, si crea un piano di generazione dati per generare dati per una colonna nella tabella Orders. Si crea quindi un progetto per contenere il test, si scrive il test stesso e si esegue il test per verificare se lo script funziona come previsto.

Prerequisiti

Per completare questa procedura dettagliata è necessario connettersi a un server di database in cui è installato il database Northwind.

Per creare un progetto di database

  1. Scegliere Nuovo dal menu File e quindi Progetto.

    Verrà visualizzata la finestra di dialogo Nuovo progetto.

  2. Nell'elenco Tipi progetto espandere il nodo Progetti di database e fare clic su Microsoft SQL Server.

  3. Nell'elenco Modelli fare clic su Creazione guidata SQL Server 2000.

  4. In Nome digitare TestNorthwind.

  5. Nell'elenco Soluzione scegliere Crea nuova soluzione, se questa opzione non è già evidenziata.

  6. Selezionare la casella di controllo Crea directory per soluzione, se non è già selezionata.

  7. Deselezionare la casella di controllo Aggiungi al controllo del codice sorgente, se non è già deselezionata, e scegliere OK.

    Verrà visualizzata la Creazione guidata nuovo progetto di database. Questa procedura guidata verrà utilizzata per configurare il progetto di database e importare lo schema di database iniziale.

Per configurare il progetto e importare uno schema di database

  1. Scegliere Avanti dopo avere letto la schermata iniziale.

  2. Poiché il database Northwind contiene un solo schema, scegliere Organizza il progetto per tipo di oggetto.

    Nota importante:

    Non è possibile modificare l'organizzazione di un progetto dopo averlo creato.

  3. In Specificare lo schema predefinito da utilizzare per oggetti creati nel progetto di database, accettare l'impostazione predefinita dbo.

  4. Nella pagina Imposta opzioni del database, accettare le impostazioni predefinite e scegliere Avanti.

    Nota:

    È possibile modificare queste opzioni dopo la creazione del progetto. Per ulteriori informazioni, vedere Procedura: configurare i progetti di database per la generazione e la distribuzione.

  5. Nella pagina Importa lo schema del database, selezionare la casella di controllo Importa schema esistente.

  6. In Connessione database di origine fare clic sulla connessione che corrisponde al server e al database che contiene il database Northwind. Se la connessione non è già esistente, scegliere Nuova connessione per crearla. Se non si specifica una connessione, verrà creato il progetto di database, ma non verrà importato alcuno schema.

    Nota:

    È possibile importare uno schema di database in un secondo momento, se il progetto di database non contiene già oggetti di database. Per ulteriori informazioni, vedere Procedura: importare uno schema di database.

  7. Accettare le opzioni di importazione predefinite e scegliere Avanti.

  8. Nella pagina Configura generazione/distribuzione, in Connessione di destinazione, scegliere il pulsante Sfoglia e specificare una connessione al server di database in cui si desidera creare l'ambiente di sviluppo isolato.

    Per creare una nuova istanza locale del database, nella finestra di dialogo Proprietà connessione digitare (locale) in Nome server e scegliere Usa autenticazione di Windows. Scegliere OK.

  9. In Nome database di destinazione digitare TestNorthwind se non è già stato specificato.

  10. In Confronto di distribuzione predefinito scegliere Utilizza confronto del server.

    Con questa operazione si imposta il database di destinazione in modo che utilizzi il confronto di progetti di database.

  11. Selezionare la casella di controllo Blocca distribuzione incrementale se dovesse verificarsi una perdita di dati.

    Poiché l'ambiente di sviluppo isolato conterrà solo dati di test generati, la perdita di dati può non costituire un problema.

  12. Scegliere Fine per creare il progetto di database e importare il database.

Per esaminare il progetto risultante

  1. In Esplora soluzioni espandere il nodo TestNorthwind e il nodo figlio Oggetti dello schema.

  2. Esplorare i nodi secondari sottostanti al nodo Oggetti dello schema nella gerarchia.

    In Esplora soluzioni sono contenuti i file che definiscono gli oggetti presenti nello schema del database da cui sono stati importati.

  3. Scegliere Altre finestre dal menu Visualizza e quindi scegliere Visualizzazione schema.

  4. Nella Visualizzazione schema espandere il nodo TestNorthwind.

  5. Esplorare i nodi secondari sottostanti al nodo TestNorthwind nella gerarchia.

    Nella finestra Visualizzazione schema sono contenuti gli oggetti definiti nei file visualizzati in Esplora soluzioni.

  6. In Esplora soluzioni fare clic sul nodo TestNorthwind.

  7. Scegliere Proprietà TestNorthwind dal menu Progetto.

  8. Nella pagina Proprietà fare clic sulla scheda Generazione.

  9. In Nome database di destinazione digitare TestNorthwind.

  10. Scegliere Salva elementi selezionati dal menu File.

  11. Fare clic sul progetto TestNorthwind in Esplora soluzioni.

  12. Scegliere Genera soluzione dal menu Genera.

  13. Scegliere Distribuisci TestNorthwind dal menu Genera.

    Nota:

    Ogni sviluppatore specificherà la stringa di connessione al server di database che conterrà la propria copia del database.

Successivamente, specificare un piano di generazione dati per popolare il database di sviluppo isolato con dati di test realistici.

Per creare un piano di generazione dati

  1. In Esplora soluzioni espandere il nodo TestNorthwind e fare clic sulla cartella Piani di generazione dati.

  2. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  3. Nell'elenco Modelli scegliere Piano di generazione dati.

  4. In Nome digitare TestNW.dgen e scegliere Aggiungi.

    Un piano di generazione dati denominato TestNW verrà aggiunto al progetto di database e aperto nell'Editor. Lo schema di database verrà importato nel piano di generazione dati. Successivamente, sarà possibile modificare tale piano per generare dati di test più realistici.

Per definire il piano di generazione dati per la tabella Orders

  1. Fare clic su dbo.Orders nel piano di generazione dati.

  2. Scegliere Generatore di dati dal menu Dati e quindi Dettagli colonna.

    Verrà visualizzata la finestra Dettagli colonna in cui sono presentate le colonne della tabella Orders, i relativi tipi di dati, il generatore predefinito associato a ogni colonna e il risultato del generatore.

  3. Nel riquadro Dettagli colonna scegliere ShipCity e impostare il campo Generatore su Generatore associato a dati.

    Con questo passaggio si indica che si intende popolare la colonna con i risultati di una query.

  4. Scegliere Finestra Proprietà dal menu Visualizza.

  5. Andare alla sezione Generatore della finestra Proprietà. Nella proprietà Connection Information fare clic sulla connessione che corrisponde al database da cui è stato importato lo schema di database in una procedura precedente.

    Con questo passaggio si specifica la connessione di database che si desidera utilizzare per eseguire la query tramite la quale verranno generati i dati per questa colonna.

  6. Nella sezione Generatore della finestra Proprietà, nella proprietà Query, impostare la stringa di query su SELECT * FROM Orders.

    Nota:

    Non modificare il valore di inizializzazione. Questo valore è necessario per generare un dato specifico dal database Northwind, che verrà utilizzato successivamente in questa procedura dettagliata.

  7. Nel riquadro Dettagli colonna, nel campo Output generatore per ShipCity, fare clic su [OutputTable1].[ShipCity].

    Con questo passaggio si seleziona la colonna nel gruppo di risultati che si desidera associare a questa colonna.

  8. Salvare il piano di generazione dati.

    Il passaggio successivo prevede la creazione di uno unit test del database che utilizza questi dati.

Creare uno unit test del database

Per creare uno unit test del database

  1. In Visual Studio scegliere Nuovo test dal menu Test.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo test.

  2. Scegliere Unit test di database.

  3. In Nome test digitare SampleUnitTest.

  4. In Aggiungi a progetto di test scegliere Crea nuovo progetto di test Visual C# e quindi OK.

    Verrà visualizzata la finestra di dialogo Nuovo progetto di test.

  5. Mantenere il nome predefinito per il nuovo progetto di test e scegliere Crea.

    Il nuovo progetto di test verrà aggiunto alla soluzione TestNorthwind esistente. Nel progetto è presente un file denominato SampleUnitTest.cs, che contiene il codice di una nuova classe di test per gli unit test del database. La classe di test è denominata SampleUnitTest e contiene un nuovo metodo di unit test denominato DatabaseTest1 per impostazione predefinita. È possibile mantenere il nome di questo metodo di test o sostituirlo con un nome più significativo e personalizzarlo per restituire i risultati del test di destinazione. Per ulteriori informazioni, vedere Procedura: aprire uno unit test del database da modificare.

    Verrà visualizzata la finestra di dialogo Configurazione del progetto 'TestProject'.

  6. In Connessioni database selezionare il database TestNorthwind nella prima casella di riepilogo a discesa. Il nome viene visualizzato nel formato <Server>TestNorthwind.dbo. Se viene visualizzato questo nome, fare clic su di esso e andare al passaggio 9.

  7. Se non viene visualizzato il database TestNorthwind, scegliere Nuova connessione.

    Verrà visualizzata la finestra di dialogo Proprietà connessione.

  8. Nella finestra di dialogo Proprietà connessione individuare il nome del server contenente il database TestNorthwind e fare clic sul tipo di autenticazione da utilizzare. In Seleziona o immetti nome di database digitare TestNorthwind e scegliere OK per chiudere la finestra di dialogo Proprietà connessione.

    Nota:

    Dopo avere stabilito una connessione a un database, il relativo nome viene visualizzato nella finestra di dialogo Configurazione del progetto 'TestProject' in Connessioni database.

  9. Nella finestra di dialogo Configurazione del progetto 'TestProject' selezionare la casella di controllo Utilizzare una connessione dati secondaria per convalidare gli unit test.

    Nota:

    Lo stesso valore viene assegnato a entrambe le stringhe di connessione. Nella maggior parte dei casi, si utilizza una stringa di connessione con autorizzazioni superiori per la convalida anziché per l'esecuzione. Per ulteriori informazioni, vedere Cenni preliminari sulle stringhe di connessione e sulle autorizzazioni.

  10. Selezionare la casella di controllo Genera dati di test prima dell'esecuzione di unit test.

  11. Nella casella di riepilogo a discesa fare clic sul piano di generazione dati TestNW e scegliere OK. Questo piano di generazione dati verrà applicato al database TestNorthwind all'esecuzione dello unit test.

    Nota:

    È inoltre possibile utilizzare questa finestra di dialogo per configurare la distribuzione dello schema. Per ulteriori informazioni, vedere Procedura: configurare l'esecuzione di unit test del database.

    Alla chiusura della finestra di dialogo Configurazione del progetto 'ProgettoTest', verrà visualizzata la Finestra di progettazione unit test del database.

    Per ogni condizione di test aggiunta, viene creato codice C# o Visual Basic in un file di codice sorgente.

  12. Generare il progetto di test facendo clic con il pulsante destro del mouse su di esso in Esplora soluzioni e scegliendo Genera.

  13. Aggiungere un altro unit test facendo clic su Aggiungi test (+) nella barra di spostamento della finestra di progettazione unit test del database.

    Verrà visualizzata la finestra di dialogo Specificare un nome per un test di database.

  14. Mantenere il nome predefinito per il nuovo metodo di test e quindi scegliere OK. Verrà aggiunto un altro unit test al progetto esistente. Questo unit test verrà creato come nuovo metodo di test all'interno della classe SampleUnitTest creata in precedenza.

    A questo punto, è possibile scrivere la logica effettiva del test.

Per scrivere lo unit test del database

  1. Sulla barra di spostamento della finestra di progettazione unit test del database, fare clic su DatabaseTest1 e verificare che Test sia selezionato nella casella di riepilogo a discesa adiacente. In questo modo verrà creato lo script di test per l'azione di test nello unit test DatabaseTest1.

  2. Aggiungere le seguenti istruzioni T-SQL nell'Editor T-SQL:

    SELECT * from Orders where ShipCity = 'Seattle'
    
  3. Nel riquadro Condizioni di test fare clic sulla condizione di test di tipo Senza risultati ed eliminarla facendo clic su Elimina condizione di test (x).

  4. Aggiungere una condizione di test di conteggio righe selezionando Conteggio righe nell'elenco nel riquadro Condizioni di test e facendo clic su Aggiungi condizione di test (+).

  5. Nella finestra Proprietà impostare la proprietà Conteggio righe su 1.

  6. Scegliere Salva tutto dal menu File.

    È ora possibile eseguire il test.

Per eseguire lo unit test del database

  1. Scegliere Finestre dal menu Test e quindi Visualizzazione test.

    Nella finestra Visualizzazione test sono elencati due test. Precedentemente in questa procedura dettagliata, è stato creato il test denominato DatabaseTest1 a cui sono state quindi aggiunte istruzioni T-SQL e una condizione di test. Il test denominato DatabaseTest2 è vuoto.

  2. Fare clic con il pulsante destro del mouse su DatabaseTest1 e scegliere Esegui selezione.

    Visual Studio Team System Database Editionutilizza il contesto privilegiato specificato per la connessione al database ed applica il piano di generazione dati. Database Editionpassa quindi al contesto di esecuzione prima di eseguire nel test lo script T-SQL. Successivamente, Database Edition valuta i risultati dello script T-SQL rispetto a quelli specificati nella condizione di test e visualizza il risultato, positivo o negativo, nella finestra Risultati test.

  3. I risultati vengono visualizzati nella finestra Risultati test.

    Il test ha esito positivo, ovvero l'esecuzione dell'istruzione SELECT restituisce una riga.

    Nota:

    Se si modifica il valore di inizializzazione per [Orders][ShipCity] nel piano di generazione dati o il numero di righe da generare, è possibile che il test abbia esito negativo. Se si generano 50 righe di dati da Northwind utilizzando il valore di inizializzazione di 5, uno dei risultati conterrrà il valore Seattle come valore del campo ShipCity.

Passaggi successivi

In un progetto tipico, si definirebbero unit test aggiuntivi per verificare che tutti gli oggetti di database critici stiano funzionando correttamente. Una volta completati tutti i test, li si verifica nel controllo della versione per condividerli con il team.

Dopo avere stabilito una linea di base, è possibile creare e modificare oggetti di database e quindi creare test associati per verificare se una modifica comprometterebbe il comportamento esistente.

Vedere anche

Attività

Procedura: creare uno unit test del database vuoto

Procedura: configurare l'esecuzione di unit test del database

Concetti

Panoramica sulla terminologia di Database Edition

Altre risorse

Progettazione di unit test del database

Personalizzazione degli unit test del database in Visual Basic o Visual C#