Condividi tramite


Risolvere i problemi di unit test del database di SQL Server

Quando si lavora con unit test di SQL Server in un database, potrebbero verificarsi i problemi seguenti.

Le modifiche di unit test e app.config vengono ignorate quando si eseguono unit test

Se si modifica il app.config file nel progetto di test, è necessario ricompilare il progetto di test prima che le modifiche siano effettive. Queste modifiche includono le modifiche apportate a app.config con la finestra di dialogo Configurazione Test di SQL Server. Se non si ricompila il progetto di test, le modifiche non vengono applicate quando si eseguono gli unit test.

Distribuzione del database in una destinazione imprevista quando si eseguono unit test

Se si distribuisce un database da un progetto di database quando si eseguono unit test, il database viene distribuito usando le informazioni sulla stringa di connessione specificate nella configurazione dello unit test. Le informazioni di connessione specificate nelle proprietà debug del progetto di database non vengono usate per questa attività, che consente di eseguire unit test di SQL Server su istanze diverse dello stesso database.

Timeout durante l'esecuzione di unit test del database

Se gli unit test del database hanno esito negativo a causa di un timeout, è possibile aumentare il periodo di timeout aggiornando il app.config file nel progetto di test. Il timeout di connessione, definito nella stringa di connessione, specifica per quanto tempo attendere quando lo unit test si connette al server. Il timeout del comando, che deve essere definito direttamente nel app.config file specifica per quanto tempo attendere quando lo unit test esegue lo script Transact-SQL. Se si verificano problemi con unit test a esecuzione prolungata, provare ad aumentare il valore di timeout del comando nell'elemento di contesto appropriato. Ad esempio, per specificare un timeout del comando di 120 secondi per l'elemento PrivilegedContext, aggiornare l'elemento app.config come segue:

<SqlUnitTesting_VS2010>
    <DatabaseDeployment
        DatabaseProjectFileName="..\..\..\..\..\..\Visual Studio 2010\Projects\Database10\Database10\AdventureWorks.sqlproj"
        Configuration="Debug" />
    <DataGeneration ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient"
        ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"
        CommandTimeout="30" />
    <PrivilegedContext Provider="System.Data.SqlClient"
        ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"
        CommandTimeout="120" />
</SqlUnitTesting_VS2010>