Usando as condições de teste em testes de unidade de banco de dados

Em um típico teste de unidade de banco de dados, um Transact-SQL testar o script é executado e retorna uma instância da ExecutionResult classe. A instância dessa classe contém um DataSet, o tempo de execução e as linhas afetadas pelo script. Todas essas informações são coletadas durante a execução do script. Esses resultados podem ser avaliados dentro do Transact-SQL script usando o RAISERROR function, ou eles podem ser avaliadas por meio de condições de teste. Visual Studio PremiumFornece um conjunto de condições de teste predefinida para uso.

Condições de teste predefinida

A tabela a seguir lista as condições de teste predefinida que você pode adicionar usando o painel de condições de teste no criador de teste de unidade de banco de dados.

Condição de teste

Descrição da condição de teste

Soma de verificação de dados

Falha se a soma de verificação do conjunto de resultados retornados da Transact-SQL script não coincide com a soma de verificação esperado. Para obter mais informações, consulte especificando uma soma de verificação de dados.

ObservaçãoObservação
Essa condição de teste não é recomendada se você estiver retornando dados irão variar entre o teste é executado.Por exemplo, se seu conjunto de resultados contém gerado de datas ou horas, ou contém colunas de identidade, os testes falham porque a soma de verificação será diferente em cada execução.

Conjunto de resultados vazio

Falha se o conjunto de resultado retornado pelo Transact-SQL script está vazio.

Tempo de execução

Falha se o Transact-SQL o script de teste demora mais do que o esperado para executar. O tempo de execução padrão é 30 segundos.

O tempo de execução aplica-se o teste do script de teste somente, não para o script pré-teste ou o script de pós-teste.

Esquema esperado

Falhará se os tipos de dados e colunas do conjunto de resultados não coincidem com aquelas especificadas para a condição de teste. Você deve especificar um esquema através das propriedades da condição de teste. Para obter mais informações, consulte especificando um esquema esperado.

Inconclusive

Sempre produz um teste com um resultado de Inconclusive. Esta é a condição padrão adicionada para cada teste. Essa condição de teste é incluída para indicar que o teste de verificação não foi implementada. Exclua a condição de teste do seu teste depois de ter adicionado outras condições de teste.

ResultSet não está vazio

Falha se o conjunto de resultados está vazio. Você pode usar essa condição de teste ou o EmptyResultSet com o Transact-SQL a função @ @ RAISERROR no seu script de teste para testar se uma atualização funcionou corretamente. Por exemplo, você pode salvar os valores de pré-atualização, execute a atualização, comparar os valores post-update e gerar um erro se você não obtiver os resultados esperados.

Contagem de linhas

Falha se o conjunto de resultados não contém o número esperado de linhas.

Valor escalar

Falha se um valor específico no conjunto de resultados não é igual o valor especificado. O padrão valor esperado é nulo.

ObservaçãoObservação

A condição de tempo de execução de teste especifica um limite de tempo em que o Transact-SQL o script de teste deve executar. Se o limite de tempo for excedido, o teste falhar. Os resultados de teste também incluem uma estatística de duração, que difere da condição de tempo de execução de teste. A estatística de duração inclui não apenas o tempo de execução, mas também o tempo para se conectar ao banco de dados duas vezes; o tempo de execução de quaisquer outros scripts de teste, como, por exemplo, o script pré-teste e o script de pós-teste; e a hora para executar as condições de teste. Portanto, um teste pode passar, mesmo que sua duração for maior que o seu tempo de execução.

A duração informada não inclui o tempo usado para a implantação de geração e o esquema de dados porque eles ocorrem antes que os testes são executados. Para exibir a duração do teste, selecione um execução do teste na Test Results janela, clique com botão direito e escolha View Test Results Details.

Você pode adicionar condições de teste para testes de unidade de banco de dados usando o painel de condições de teste do Designer de teste de unidade do banco de dados. Para obter mais informações, consulte Como: Adicionar condições de teste para testes de unidade de banco de dados.

Você também pode editar o código do seu método de teste diretamente para adicionar mais funcionalidade. Para obter mais informações, consulte Como: Abra um teste de unidade de banco de dados para editar e Como: Escrever um teste de unidade de banco de dados é executado dentro do escopo de uma única transação.. Por exemplo, você pode adicionar funcionalidade a um método de teste, adicionando instruções Assert. Para obter mais informações, consulte Usando o Transact-SQL asserções em testes de unidade de banco de dados.

Falhas esperadas

Você pode criar testes de unidade de banco de dados para testar o comportamento que não deve ser bem-sucedidos. Esses esperado falhas são chamadas de teste negativos. Alguns exemplos seriam incluem o seguinte:

  • Verifique se que um procedimento armazenado que exclui dados de um cliente falha se você especificar uma ID de cliente inválido

  • Verifique se que um procedimento armazenado que preenche uma ordem falhará se o pedido nunca foi feito ou se o pedido já foi preenchido.

  • Verifique se que um procedimento armazenado que cancela um pedido não é possível cancelar pedidos concluídos ou pedidos que já foram cancelados

Você pode definir os testes de unidade de banco de dados para os procedimentos armazenados que lançar exceções esperadas de SQL. Você pode adicionar um atributo para o método de teste de unidade para indicar qual exceção ou exceções são esperadas. Fazendo isso, você impede que o teste falhar quando a exceção ocorrer.

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)]

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ê passa esses parâmetros para o RAISERROR instrução no seu código de banco de dados. Se você especificar MatchFirstError = false, então o atributo corresponderá a 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.

Especificando uma soma de verificação de dados

Depois de adicionar uma condição de teste de soma de verificação de dados para seu teste de unidade de banco de dados, você deve configurar a soma de verificação esperada usando o seguinte procedimento:

Para especificar uma soma de verificação esperada

  1. Na lista de condições de teste, clique na condição de teste de soma de verificação de dados para o qual você deseja especificar uma soma de verificação.

  2. Abrir o Propriedades janela pressionando F4. Você também pode abrir o Exibir menu e clique Propriedades janela.

  3. (Opcional) Talvez você queira alterar o (nome) a propriedade da condição de teste seja mais descritivo.

  4. No configuração propriedade, clique em browse () botão.

    O configuração de TestConditionName caixa de diálogo aparece.

  5. Especifica uma conexão ao banco de dados que você deseja testar. Para obter mais informações, consulte Como: Criar uma conexão de banco de dados.

  6. Por padrão, o Transact-SQL o corpo do seu teste é exibido no painel de edição. Você pode modificar o código, se necessário, para produzir os resultados esperados. Por exemplo, se o teste tiver código no pré-teste, talvez você precise adicionar esse código.

    Observação importanteImportante

    Se você modificar uma condição de soma de verificação para o qual você tinha anteriormente especificado uma soma de verificação, quaisquer alterações feitas no painel de edição não são salvas. Você deve fazer essas alterações novamente antes de clicar em recuperar.

  7. Clique em recuperar.

    O Transact-SQL é executada no banco de dados especificado conexão e os resultados aparecem na caixa de diálogo.

  8. Se os resultados corresponderem os resultados esperados do seu teste, clique em OK. Caso contrário, modificar o Transact-SQL corpo e repita as etapas de 6, 7 e 8 até que os resultados são conforme o esperado.

    O valor coluna condição de teste exibe o valor da soma de verificação esperado.

Especificando um esquema esperado

Depois de adicionar uma condição de teste do esquema esperado para o teste de unidade de banco de dados, você deve configurar o esquema previsto usando o seguinte procedimento:

Para especificar um esquema esperado

  1. Na lista de condições de teste, clique na condição de teste de esquema esperado para o qual você deseja especificar um esquema.

  2. Abrir o Propriedades janela pressionando F4. Você também pode abrir o Exibir menu e clique o Propriedades janela.

  3. (Opcional) Talvez você queira alterar o (nome) a propriedade da condição de teste seja mais descritivo.

  4. No configuração propriedade, clique em browse () botão.

    O configuração de TestConditionName caixa de diálogo aparece.

  5. Especifica uma conexão ao banco de dados que você deseja testar. Para obter mais informações, consulte Como: Criar uma conexão de banco de dados.

  6. Por padrão, o Transact-SQL o corpo do seu teste é exibido no painel de edição. Você pode modificar o código, se necessário, para produzir os resultados esperados. Por exemplo, se o teste tiver código no pré-teste, talvez você precise adicionar esse código.

    Observação importanteImportante

    Se você modificar uma condição de esquema previsto para o qual você tinha especificado anteriormente um esquema, quaisquer alterações feitas no painel de edição não são salvas. Você deve fazer essas alterações novamente antes de clicar em recuperar.

  7. Clique em recuperar.

    O Transact-SQL é executada no banco de dados especificado conexão e os resultados aparecem na caixa de diálogo. Porque você está verificando o esquema ou a forma, o resultado definido e não os valores dos resultados, você não tem que ver todos os dados de resultados retornados, contanto que as colunas aparecem da maneira que você espera que eles apareçam.

  8. Se os resultados corresponderem os resultados esperados do seu teste, clique em OK. Caso contrário, modificar o Transact-SQL corpo e repita as etapas de 6, 7 e 8 até que os resultados são conforme o esperado.

    O valor coluna condição de teste exibe informações sobre o esquema esperado. Por exemplo, pode dizer "esperado: 2 tabelas".

Condições de teste extensível

Além de seis condições de teste predefinida, você pode escrever novas condições de teste de sua preferência. Essas condições serão exibidas no painel de condições de teste do Designer de teste de unidade do banco de dados de teste. Para mais informações, consulte: Como: Criar condições de teste para o criador de teste de unidade de banco de dados.

Consulte também

Conceitos

Usando o Transact-SQL asserções em testes de unidade de banco de dados

Scripts em testes de unidade de banco de dados