Unit Test em Stored Procedures (Sql Server) Parte I
Allan Rodrigues
Posted on June 9, 2020
Atualmente temos acompanhado o mercado e visto muitas vagas de emprego que pedem ao desenvolvedor habilidades em construir testes unitários e conhecimento de ferramentas para aplicar testes front-end.
Porém pouco, ou nem isso, lembramos de criar rotinas para testes em nossas procedures, não é mesmo? Apenas algumas execuções simples e uma conferida rápida no resultado.
Se identificou, né?
Então devido essa realidade que tenho visto nos meus dias de trabalho resolvi começar a aplicar em meu dia-a-dia(sim, eu também não fazia) e compartilhar para quem se interessar em uma forma de realizar testes em suas procedures criadas no SQL Server. E ai meu velho? Vamo lá?
Nesse exemplo eu usei:
- Visual Studio Data Tools 2017
- SQL Server 2016
- Banco de Dados de Estudo: WorldWideImporters
MÃOS NA MASSA!!!!
Primeiro vamos criar nossa procedure que será o objeto de teste. Uma procedure simples que realiza operações matemáticas e retorna um resultado.
Obs: Salve o script da procedure, pois será necessário mais a frente.
Depois da compilação da procedure vamos para o VS Data Tool 2017.
Com o VS aberto criamos um novo projeto, e em templates ou instalados buscamos por SQL Server Database Project.
Em seguida damos um nome ao projeto/solução e OK.
Após criado a solução, vamos em Projeto > Importar > Script (*.sql).
Lembra da procedure que foi criada lá no início? Pois é vamos importar agora para o nosso projeto. Seguindo a sequência de imagens a seguir.
1 - Selecione o arquivo do script .sql que foi salvo em alguma pasta do seu computador:
2 - Deixe nas opções padrões mesmo (eu não altero):
3 - O Visual Studio mostrará o progresso de importação.
4 - E.... Voilà! O seu objeto foi importado e aparecerá no Object Explorer abaixo:
Feito isso, clique com o botão direito em cima do objeto importado e então em "Criar Teste Unitário... (Create Unit Test...)"
Em seguida abrirá uma janela modal para configurar a conexão com o banco de dados, informe o seu servidor, usuário e senha de forma padrão na aba browse e clique em OK.
Assim concluímos mais um passo!!! UFA! Muita coisa, ne? Porém ainda temos um caminho pela frente.. siga firme!
Retomando....
Após criarmos a nossa conexão o Visual Studio nos mostrará uma tela com um script de chamada da procedure de teste, e no combobox superior esquerdo o objeto que está será testado e no combobox da direita nos dá três opções que são executadas na sequência:
Pre-test:(OPCIONAL) Nessa área podemos criar scripts de preparação de ambiente, como por exemplo create, inserts de dados necessários para o funcionamento da rotina.
Test:(OBRIGATÓRIO) Aqui será feito o script de teste mesmo.
Pos-Test:(OPCIONAL) Pode ser usado para limpar os dados utilizados durante o teste.
Nessa mesma tela vamos remover o teste inconclusivo que aparece na parte inferior..
E então vamos criar uma validação de teste bem simples! Apenas pra verificar se a procedure está retornando dados da operação informada.
Pra isso na mesma área onde removemos o teste inconclusivo, vamos incluir uma condição de teste.
Escolha no combobox a opção "Row Count" e então adicione.
Na sequencia, clique em cima da linha e pressione F4 para acessar as propriedades do teste e altere o valor de "ROW COUNT" de 0 para 1 e salve tudo.
Quando salvar tudo da solução, na aba de "Gerenciamento de Teste" irá aparecer o teste nós criamos, como na imagem abaixo:
E então vamos rodar o nosso teste!!!!
PRONTINHO!!
TESTE EXECUTADO COM SUCESSO.
Alteramos os parâmetros para valores válidos e executamos a rotina, parece meio demorado não é? Mas não é não e vale muito a pena, principalmente se você tem que documentar os resultados do teste.
Neste primeiro post de 3, fizemos o caso de sucesso.
No próximo vamos verificar o valor esperado e o último o teste negativo.
Até a próxima meus amigos.
Posted on June 9, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.