Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In uno unit test di SQL Server un Transact-SQL script di test viene eseguito e restituisce un risultato. In alcuni casi, i risultati vengono restituiti come set di risultati. È possibile convalidare i risultati usando condizioni di test. Ad esempio, è possibile usare una condizione di test per controllare il numero di righe restituite in un set di risultati specifico o per verificare per quanto tempo è stato eseguito un determinato test. Per altre informazioni sulle condizioni di test, vedere Usare le condizioni di test negli unit test di SQL Server.
Anziché usare condizioni di test, è anche possibile usare le asserzioni Transact-SQL, che sono istruzioni THROW o RAISERROR in uno script Transact-SQL. In determinate circostanze, potrebbe essere preferibile usare un'asserzione Transact-SQL anziché una condizione di test.
Usare le asserzioni Transact-SQL
È consigliabile prendere in considerazione i punti seguenti prima di decidere di convalidare i dati usando Transact-SQL asserzioni o usando condizioni di test.
Prestazioni. È più veloce eseguire un'asserzione Transact-SQL nel server che spostare i dati in un computer client e modificarla in locale.
Familiarità con il linguaggio. È possibile preferire un linguaggio specifico in base alle competenze correnti e quindi scegliere Transact-SQL asserzioni o condizioni di test C# o Visual Basic.
Validazione complessa. In alcuni casi, è possibile compilare test più complessi in C# o Visual Basic e convalidare i test nel client.
Semplicità. Spesso è più semplice usare una condizione di test predefinita che scrivere lo script equivalente in Transact-SQL.
Librerie di convalida legacy. Se si dispone già di codice che esegue la convalida, è possibile usarlo in uno unit test di SQL Server invece di usare condizioni di test.
Contrassegnare i metodi di unit test con l'eccezione prevista
Per contrassegnare un metodo di unit test di SQL Server con eccezioni previste, aggiungere l'attributo seguente:
<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]
Where:
- nnnnn è il numero del messaggio previsto, ad esempio 14025
- x è la gravità dell'eccezione prevista
- y è lo stato dell'eccezione prevista
Tutti i parametri non specificati vengono ignorati. Questi parametri vengono passati all'istruzione RAISERROR nel codice del database. Se si specifica MatchFirstError = true, l'attributo corrisponde a uno qualsiasi degli SqlErrors nell'eccezione. Il comportamento predefinito (MatchFirstError = true) corrisponde solo al primo errore che si verifica.
Per un esempio di come usare le eccezioni previste e uno unit test negativo di SQL Server, vedere Procedura dettagliata: Creare ed eseguire uno unit test di SQL Server.
Istruzione RAISERROR
Annotazioni
Usare THROW invece di RAISERROR.
RAISERROR è ora deprecato.
È possibile usare direttamente Transact-SQL asserzioni nel server usando l'istruzione RAISERROR nello script Transact-SQL. La sintassi è:
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)
where:
-
@ErrorMessageè qualsiasi messaggio di errore definito dall'utente. È possibile formattare questa stringa di messaggio simile allaprintf_sfunzione . -
@ErrorSeverityè un livello di gravità definito dall'utente compreso tra 0 e 18.
Annotazioni
I valori '0' e '10' per il livello di gravità non causano l'esito negativo dello unit test di SQL Server. È possibile usare qualsiasi altro valore compreso nell'intervallo da 0 a 18 per causare l'esito negativo del test.
@ErrorState è un numero intero arbitrario compreso tra 1 e 127. È possibile usare questo numero intero per distinguere le occorrenze di un singolo errore generato in posizioni diverse nel codice.
Per altre informazioni, vedere RAISERROR. Un esempio di utilizzo RAISERROR in uno unit test di SQL Server è disponibile nell'articolo Procedura: Scrivere uno unit test di SQL Server eseguito nell'ambito di una singola transazione.