Fala Pessoal beleza! Nesse post aprenderemos, por que devemos implementar testes unitários? Se podemos tranquilamente executar a nossa aplicação e apenas fazer os testes manualmente garantindo que tudo funcione, então, por que implementar testes unitários? Por que apenas testar manualmente não nos garante que o código se mantém funcionando após mudanças? Bom é claro que existem algumas vantagens significativas em implementar testes unitários para testar nosso código.
Implementamos testes unitários para garantir que nosso código funcione e isso é óbvio, mas essa não é a maior vantagem. Uma das razões pelas quais implementamos testes unitários é para garantir que o método que implementamos funcione bem com diferentes parâmetros sejam eles válidos ou inválidos. Afinal de contas precisamos ter certeza de que tudo funciona bem com parâmetros válidos e inválidos. É claro que também podemos fazer testes manuais e fornecer manualmente parâmetros válidos e inválidos. Mas se tivermos uma aplicação muito grande com muitas funcionalidades, é muito fácil esquecer de testar uma das funcionalidades com um dos parâmetros inválidos. Principalmente quando temos muitos desenvolvedores trabalhando no projeto quando as alterações em nossa aplicação são feitas diariamente e quando precisamos fazer testes frequentes, o teste manual da aplicação que possui muitas funcionalidades torna-se muito difícil e torna-se muito fácil esquecer de testar a funcionalidade com um parâmetro de entrada inválido específico.
Outro grande motivo pelo qual precisamos implementar testes unitários é garantir que nosso código funcione bem agora e no futuro. Imagine que você escreveu um método muito complexo. Este método é muito útil e outros desenvolvedores começaram a usá-lo em suas classes também. Como podemos garantir que outros desenvolvedores que desejam fazer alterações em seu código não quebrem nada? Os testes unitários que escrevemos para este método lhe darão a confiança de que alterações futuras neste método não interromperão a funcionalidade existente e que este método ainda funcionará conforme o esperado, como costumava funcionar antes, com os parâmetros válidos e inválidos predefinidos.
Esses testes também são chamados de testes de regressão e eles nos ajudam a nos sentirmos mais confiantes de que as novas alterações nas funcionalidades existentes não quebram outras partes da aplicação. Se você fizer alterações em um dos métodos e quebrar uma funcionalidade da aplicação bem testada, isso será chamado de regressão. Por isso podemos dizer implementarmos testes unitários para garantir que não haja regressão e que todas as funcionalidades ainda funcionem conforme o esperado, mesmo depois de fazermos alteração no código existente e tudo continuará funcionando. Bom por esse post é isso no próximo conheceremos o conceito de FIRST.
Treinamentos relacionados com este post
![Java Unit Testing com Spring Boot 3, TDD, Junit 5 e Mockito](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/24-tests_java.png)
![Java Continuous Integration e Continuous Delivery com AWS e Github Actions](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/27_CICD_JavaAWS.png)
![Java Continuous Integration e Continuous Delivery com Microsoft Azure e Github Actions](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/28_CICD_JavaAzure.png)
![REST API's RESTFul do 0 à AWS com Spring Boot 3, Java e Docker](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/07-rest-spring-java.png)
![REST API's RESTFul do 0 à Azure com ASP.NET Core 5 e Docker](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/01-rest-asp.png)
![REST API's RESTFul do 0 à AWS com Spring Boot 3, Kotlin e Docker](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/18-rest-spring-kotlin.png)
![Microservices do 0 com Spring Cloud, Spring Boot e Docker](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/14-microservices-java.png)
![Arquitetura de Microsserviços do 0 com ASP.NET, .NET 6 e C#](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/15-microservices-dotnet.png)
![Microsserviços do 0 com Spring Cloud, Kotlin e Docker](https://raw.githubusercontent.com/leandrocgsi/blog-images/main/22-ms-kotlin.png)