Condividi tramite


Risoluzione dei problemi relativi agli unit test del database

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

  • 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.

Nota

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.

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 ricompilare 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 ricompilato, 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 compilazione 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 in fase di esecuzione dello script Transact-SQLda parte dello unit test.

Nota

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