Usando o Transact-SQL asserções em testes de unidade de banco de dados
Em um teste de unidade de banco de dados, um Transact-SQL testar o script é executado e retorna um resultado. Às vezes, os resultados são retornados como um conjunto de resultados. Você pode validar os resultados usando as condições de teste. Por exemplo, você pode usar uma condição de teste para verificar quantas linhas foram retornadas em um conjunto de resultado específico ou para verificar um teste específico quanto tempo levou para ser executada. Para obter mais informações sobre condições de teste, consulte Usando as condições de teste em testes de unidade de banco de dados.
Em vez de usar as condições de teste, você também pode usar Transact-SQL declarações, que são instruções RAISERROR em um Transact-SQL script. Em determinadas circunstâncias, talvez você prefira usar um Transact-SQL asserção em vez de uma condição de teste.
Usando as declarações de Transact-SQL
Você deve considerar os seguintes pontos antes de decidir validar dados usando Transact-SQL declarações ou usando as condições de teste.
Desempenho. É mais rápido executar um Transact-SQL declaração no servidor que primeiro mover dados para um computador cliente e manipulá-lo localmente.
Familiaridade com a linguagem. Você pode preferir um idioma específico, com base em sua experiência atual e, portanto, escolha Transact-SQL declarações ou C# ou Visual Basic Testar condições.
Validação de complicado. Em alguns casos, você pode criar validação mais complexa de teste mais apenas na C# ou Visual Basic e validar os testes no cliente.
Bibliotecas de validação herdados. Se você já tiver o código que executa a validação, você pode usá-lo em um teste de unidade de banco de dados em vez de usar as condições de teste.
Marcar os métodos de teste de unidade com a exceção esperada
Para marcar um método de teste de unidade de banco de dados com exceções esperadas, adicione o seguinte atributo:
<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]
Onde:
nnnnn é o número da mensagem esperada, por exemplo 14025
x é a gravidade da exceção esperada
y é o estado de exceção esperada
Todos os parâmetros não especificados serão ignorados. Você pode passar esses parâmetros para a instrução RAISERROR no seu código de banco de dados. Se você especificar MatchFirstError = true, o atributo corresponderá qualquer um de SqlErrors na exceção. O comportamento padrão (MatchFirstError = true) é corresponder apenas o primeiro erro que ocorre.
Para obter um exemplo de como usar exceções esperadas e um teste de unidade de banco de dados negativos, consulte Demonstra Passo a passo: Criando e executando um teste de unidade de banco de dados.
A instrução RAISERROR
Você pode usar diretamente Transact-SQL declarações no servidor usando a instrução RAISERROR no seu Transact-SQL script. Sua sintaxe é:
**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**
Onde:
@ ErrorMessage é qualquer mensagem de erro definido pelo usuário. Você pode formatar esta seqüência de mensagem semelhante à função printf_s.
@ ErrorSeverity é um nível de gravidade definidos pelo usuário entre 0 e 18.
Observação |
---|
Os valores '0' e '10' para o nível de gravidade não causam o falha do teste de unidade de banco de dados. Você pode usar qualquer outro valor no intervalo de 0 - 18 para fazer com que o teste falhar. |
@ ErrorState é um inteiro arbitrário de 1 – 127. Você pode usar este número inteiro para diferenciar entre ocorrências de um único erro que é aumentado em locais diferentes no código.
Para obter mais informações, consulte RAISERROR (Transact-SQL) no SQL Server Books Online no site da Microsoft. Um exemplo do uso de RAISERROR em um teste de unidade de banco de dados é fornecido no tópico, Como: Escrever um teste de unidade de banco de dados é executado dentro do escopo de uma única transação..
Consulte também
Tarefas
Como: Abra um teste de unidade de banco de dados para editar
Conceitos
Usando as condições de teste em testes de unidade de banco de dados
Verificando o banco de dados código usando testes de unidade