Post: Realizando teste em inserção no banco de dados

Alessandro Medeiros

Fala ai Radizeiros e Radizeiras, tudo bem com vocês?

Dando continuidade ao nosso post anterior, onde vemos como preparar toda nossa estrutura para estar apta a receber os testes unitários.

Agora iremos implementar os testes para operações no banco de dados.

Para que possamos realizar esses testes unitários para operações no banco de dados, você terá que ter em mente o seguinte, você não irá conseguir implementar testes se você estiver trabalhando 100% RAD, com um monte de componentes na tela, e dessa forma é muito difícil implementar testes nesse cenário, você pode até conseguir, mas não é um cenário ideal.

O cenário ideal é aquele que você possui tudo dividido e separado, como por exemplo, foi feito no post anterior, ainda que de forma RAD, eu dividi e separei uma classe com mapeamento com a tabela do banco de dados, uma classe DAO para poder fazer as operações do CRUD, ai desta forma eu consigo implementar o teste unitário de uma forma muito fácil.

Agora que temos nossa classe que representa a nossa tabela Pessoa do banco de dados já mapeado, e com a nossa classe DAO, para fazer as operações para essa nossa tabela, vamos agora para o nosso teste unitário.

Vamos na classe de teste e criar um método para inserir registros no banco de dados.

…
private 
...
   FPessoaDAO : TPESSOADAO
…
[Test]
procedure Insert;
…
procedure TTesteWorkshop.Setup;
begin
  FPessoa := TPessoa.Create;
  FPessoaDAO := TPessoaDAO.Create;
end;
..
procedure TTesteWorkshop.Insert;
begin
    try
    FPessoaDAO.Entidade.GUUID := '123';
    FPessoaDAO.Entidade.Nome := '123';
    FPessoaDAO.Entidade.Senha := '123';
    FPessoaDAO.Entidade.Tipo := 1;
    FPessoaDAO.Entidade.Status := 1;
    FPessoaDAO.Entidade.DtCad := now;
    FPessoaDAO.Entidade.DtAlt := now;
    FPessoaDAO.Insert;

    FPessoaDAO.BuscaID('123');
    Assert.IsTrue(FPessoaDAO.Entidade.GUUID = '123','TPEssoaDAO.Insert erro ao inserir GUIID');
    Assert.IsTrue(FPessoaDAO.Entidade.Nome = '123','TPEssoaDAO.Insert erro ao inserir NOME');
    Assert.IsTrue(FPessoaDAO.Entidade.Senha = '123','TPEssoaDAO.Insert erro ao inserir SENHA');
    Assert.IsTrue(FPessoaDAO.Entidade.Tipo = 1,'TPEssoaDAO.Insert erro ao inserir TIPO');
    Assert.IsTrue(FPessoaDAO.Entidade.Status = 1,'TPEssoaDAO.Insert erro ao inserir STATUS');
    Assert.IsNotNull(FPessoaDAO.Entidade.DtCad,'TPEssoaDAO.Insert erro ao inserir DTCAD');
    Assert.IsNotNull(FPessoaDAO.Entidade.DtAlt,'TPEssoaDAO.Insert erro ao inserir DTALT');
  finally
    FPessoaDAO.Entidade.GUUID := '123';
    FPessoaDAO.Delete;
  end;
end;

Observe no código acima que criamos um objeto e mantemos ele ativo quando instanciamos esse nosso objeto no método Setup, que é como se fosse nosso create do DUNIT, fazendo assim podemos trabalhar com ele no método Insert que foi criado para fazer o teste de inserção de dados no banco.

Nossa entidade do DAO foi alimentada com algumas informações, ao chamarmos o nosso objeto temos o método Entidade que dá acesso a todas as propertys da entidade pessoa.

Como estamos fazendo testes de inserção no banco de dados, você precisa passar dados de algo que não precisa estar no banco, ou seja, informações que não serão utilizadas dentro de seu sistema, ou um banco de dados para teste, que o aconselhável.

Nós estamos inserindo os registros em nossa entidade, e persistimos esses dados no banco com o método insert, solo em seguida fazemos uma busca no banco com a GUUID que acabamos de inserir, em seguida é feito os testes se realmente os dados foram inseridos corretamente, após todo esse processo, se tudo ocorreu bem e não teve nenhum erro, apagamos o registro testado do banco.

Desse jeito já conseguimos fazer uma validação de registro no banco de dados usando teste unitários.

Vamos rodar nosso teste unitário agora para ver se tudo correu bem?

Nosso teste passou, isso é sinal que está ocorrendo tudo bem com o que acabamos de implementar, mas se você ir no banco de dado não iremos conseguir sabe se o registro consta lá, porque logo no final do teste apagamos esse registro de lá.

Então para que possamos ter certeza se as informações estão sendo inseridas perfeitamente, iremos executar nosso teste unitário em modo debug.

Vamos verificar o registro se foi salvo no banco  de dados agora.

Viu como nosso teste inseriu todos os dados dentro do nosso banco de dados.

Agora dando continuidade na compilação do nosso teste unitário ele irá verificar cada registro que foi recebido do banco de dados estão idênticos com o que estamos comparando no nosso teste.

Se tudo correr tudo bem nos testes ele seta a GUUID e apaga o registro do banco de dado.

Agora no banco de dado já não encontra-se mais esse registro que foi inserido somente como teste.

Agora vamos simular um erro nessa nossa inserção.

Vamos executar novamente em modo debug, e após inserido o registro no banco iremos alterar ele e vamos prosseguir com o debug e vamos ver o resultado disso.

Verificando no banco de dados.

Vamos prosseguir com o debug, e observe o erro no nome que alteramos.

Foram 4 testes, 3 passaram e somente 1 que deu erro, onde você pode ver na mensagem que ele estava esperando um registro verdadeiro e o retorno foi  falso.

Nosso teste está validando perfeitamente as inserções do banco de dados.

Viu como é fácil e muito legal de validar as operações de banco de dados nos testes unitários?

Com isso podemos automatizar nossas operações de testes e evoluir muito nosso software.

Seguir as boas prática aumenta e muito sua produtividade e reduz significativamente os problemas nos software.

Trabalhar com testes unitário nos ajuda e reduzir muito os erros ocasionados internamente em nosso sistema, e claro, automatizando esses testes, para que não venhamos ter que a cada implementação ter que realizar testes dentro do código e as vezes esquecendo do famigerado showmessage na aplicação.

Este post é mais um que faz parte de um dos meus treinamentos o treinamento de Testes unitários em Delphi.

O QUE VOCÊ IRÁ APRENDER?

O treinamento de Teste de Software dará a você a oportunidade de melhorar seu desenvolvimento, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes.
Implementar testes unitários em suas aplicações e utilizar todos os seus benefícios irá facilitar muito a sua vida, quando seu cliente disser :

“toda atualização é uma surpresa diferente, algo novo não funciona e o que funcionava para de funcionar, não aguento mais isso”

Você estará preparado para entregar uma solução robusta e eficaz.

CLIQUE AQUI E SAIBA MAIS SOBRE O TREINAMENTO TESTES UNITÁRIO EM DELPHI





Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Realizando teste em inserção no banco de dados, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Realizando teste em inserção no banco de dados, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados