Risoluzione dei problemi relativi agli unit test del database
Aggiornamento: novembre 2007
Quando si eseguono unit test su un database, è possibile che si verifichino i problemi descritti in questo argomento.
Autorizzazioni insufficienti quando si eseguono unit test o si generano dati di test
Problemi quando si eseguono unit test su stored procedure numerate
Modifiche a unit test e App.Config ignorate quando si eseguono unit test
Distribuzione del database a una destinazione imprevista quando si eseguono unit test
Timeout quando si eseguono unit test di database
Autorizzazioni insufficienti quando si eseguono unit test o si generano dati di test
È possibile configurare uno unit test per distribuire automaticamente il database e generare dati. Se non si dispone delle autorizzazioni sufficienti per generare dati sul database di destinazione, è possibile che venga visualizzato un messaggio di errore indicante solo che non si dispone delle autorizzazioni per connettersi al database.
![]() |
---|
Per risolvere questo problema, eseguire manualmente il piano di generazione dati. Se non si dispone delle autorizzazioni sufficienti per generare i dati, con questo approccio verrà visualizzato un messaggio di errore più dettagliato che consente di correggere il problema. |
Problemi quando si eseguono unit test su stored procedure numerate
Se si creano unit test del database per un database che contiene stored procedure numerate (ad esempio, MyProcedure;2), nella finestra di dialogo Crea unit test non verrà visualizzata l'indicazione numerica. A causa di questo comportamento, è possibile che lo stesso nome di procedura venga visualizzato più volte se esistono più versioni numerate di una o più stored procedure.
Inoltre, nello script generato per testare queste stored procedure manca l'indicazione numerica. Ad esempio, se si genera uno unit test per una procedura denominata MyProcedure;2, lo script sarà simile al seguente:
EXEC @RC = [dbo].[MyProcedure]
![]() |
---|
Per risolvere questo problema, modificare lo script generato per aggiungere di nuovo l'indicazione numerica prima dell'esecuzione degli unit test. Se sono stati generati unit test per più stored procedure numerate, sarà necessario correggere ogni test. |
Modifiche a unit test e App.Config ignorate quando si eseguono unit test
Se si modifica il file App.Config nel progetto di test, è necessario rigenerare tale progetto prima che le modifiche abbiano effetto. Queste modifiche includono quelle apportate al file App.Config utilizzando la finestra di dialogo Configurazione progetto. Se il progetto di test non viene rigenerato, le modifiche non verranno applicate quando si eseguono gli unit test.
Distribuzione del database a una destinazione imprevista quando si eseguono unit test
Se si distribuisce un database quando si eseguono gli unit test, il database verrà creato utilizzando le informazioni sulla stringa di connessione specificate nella configurazione degli unit test. Le informazioni sulla connessione specificate nelle proprietà di generazione del progetto di database non vengono utilizzate per questa attività, quindi è possibile eseguire unit test diversi su istanze diverse dello stesso database.
Timeout quando si eseguono unit test di database
Se gli unit test del database non riescono a causa di un timeout, è possibile aumentarne l'intervallo aggiornando il file app.config nel progetto del database. Il timeout sulla stringa di connessione specifica il periodo di attesa quando l'unit test si connette al server. Il timeout del comando specifica il periodo di attesa quando l'unit test esegue lo script Transact-SQL (T-SQL).
![]() |
---|
Per risolvere questo problema, specificare un valore più grande valore per l'attributo CommandTimeout sull'elemento Context appropriato nel file app.config del progetto di test. Per specificare ad esempio un timeout del comando di 120 secondi per l'elemento PrivilegedContext, aggiornare il file app.config nel modo seguente: |
<DatabaseUnitTesting>
<DatabaseDeployment DatabaseProjectFileName="test.dbproj" Configuration="Debug" />
<DataGeneration DataGenerationFileName="test.dgen" ClearDatabase="true" />
<ExecutionContext Provider="System.Data.SqlClient" ConnectionString="another connection string" />
<PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="test" CommandTimeout=”120” />
</DatabaseUnitTesting>
Vedere anche
Attività
Procedura: creare unit test del database per funzioni, trigger e stored procedure
Procedura: configurare l'esecuzione di unit test del database