Mais um Projeto na Linguagem de Programação C#
e também mais um desafio da trilha .NET
do Decola Tech Avanade 4ª Edição 2024.
Linguagens de Programação | Ferramentas e Tecnologias |
---|---|
-
Desafio de projeto: Para este desafio, foi preciso usar os conhecimentos adquiridos no módulo de Testes Unitários com C#, da trilha .NET da DIO.
-
Contexto: Na proposta desafio o desenvoledor está trabalhando em um sistema, e seus gestores relataram que frequentemente há problemas no software: bugs, funcionalidades que estavam funcionando de repente não funcionam mais, problemas de validações, entre outros. Os clientes já começam a duvidar da qualidade do código. Feito isso, foi sugerido a implementação de testes unitários: escrever testes cobrindo as partes mais críticas do sistema, com cenários positivos e negativos, a fim de ter uma rastreabilidade e controle do código, melhorando assim a qualidade desse sistema. Os gestores aceitaram a sua ideia, e com isso, foi preciso implementar testes unitários no sistema.
-
Premissas: O sistema hoje possui dois projetos: um do tipo console, e um do tipo testes com xUnit. O projeto do tipo console possui duas classes em que são realizadas as lógicas principais: ValidacoesLista e ValidacoesString. Essas classes contém métodos em comum que são usados para realizar diversas validações em determinados cenários. O projeto de testes possui as classes de teste ValidacoesListaTests e ValidacoesStringTests, assim como seus métodos para validar o projeto do tipo console, porém estão incompletos. O meu objetivo foi implementar os métodos de testes contidos no projeto.
-
Estrutura do projeto: O projeto está estruturado da seguinte maneira:
Essas são as classes do projeto console, onde fica a principal lógica do sistema.
Classe ValidaçõesLista: classe responsável por realizar diversas validações envolvendo listas.
Classe | Método | Objetivo |
---|---|---|
ValidacoesLista | RemoverNumerosNegativos | Recebe uma lista de números inteiros e retorna uma nova lista, apenas com os números positivos |
ValidacoesLista | ListaContemDeterminadoNumero | Recebe uma lista de números inteiros e verifica se um determinado número está presente dentro dessa lista |
ValidacoesLista | MultiplicarNumerosLista | Recebe uma lista de números inteiros e retorna uma nova lista, com seus valores múltiplicados por um determinado número |
ValidacoesLista | RetornarMaiorNumeroLista | Recebe uma lista de números inteiros e retorna o maior número entre eles |
ValidacoesLista | RetornarMenorNumeroLista | Recebe uma lista de números inteiros e retorna o menor número entre eles |
Classe ValidacoesString: classe responsável por realizar diversas validações envolvendo strings.
Classe | Método | Objetivo |
---|---|---|
ValidacoesString | RetornarQuantidadeCaracteres | Recebe um texto qualquer e retorna a quantidade de caracteres presentes no texto |
ValidacoesString | ContemCaractere | Recebe um texto qualquer e um texto a ser procurado, retorna verdadeiro ou falso se um determinado trecho procurado está presente no texto |
ValidacoesString | TextoTerminaCom | Recebe um texto qualquer e um trecho a ser procurado, retorna verdadeiro ou falso se um determinado trecho procurado está presente no final do texto apenas |
Classe ValidacoesListaTests: classe responsável por realizar os testes da classe ValidacoesLista.
Classe | Método de teste | Resultado esperado do teste |
---|---|---|
ValidacoesListaTests | DeveRemoverNumerosNegativosDeUmaLista | Ao passar uma lista com diversos números, incluindo positivos e negativos, deve ser retornado uma nova lista apenas com números positivos |
ValidacoesListaTests | DeveConterONumero9NaLista | Ao passar uma lista com diversos números, incluindo o número 9, deve retornar verdadeiro, pois encontrou o 9 na lista |
ValidacoesListaTests | NaoDeveConterONumero10NaLista | Ao passar uma lista com diversos números, mas sem o número 10, deve retornar falso, pois não encontrou o 10 na lista |
ValidacoesListaTests | DeveMultiplicarOsElementosDaListaPor2 | Ao passar uma lista de inteiros, deve retornar uma nova lista, com todos os elementos da lista multiplicados por 2 |
ValidacoesListaTests | DeveRetornar9ComoMaiorNumeroDaLista | Ao passar uma lista de números inteiros, sendo o maior deles 9, deve retornar o 9 como maior elemento dentro dessa lista |
ValidacoesListaTests | DeveRetornarOitoNegativoComoMenorNumeroDaList | Ao passar uma lista de números inteiros, sendo o menor deles -8, deve retornar o -8 como menor elemento dentro dessa lista |
Classe ValidacoesStringTests: classe responsável por realizar os testes da classe ValidacoesString.
Classe | Método de teste | Resultado esperado do teste |
---|---|---|
ValidacoesStringTests | DeveRetornar6QuantidadeCaracteresDaPalavraMatrix | Ao passar um texto escrito a palavra "Matrix", deve retornar o número 6, representando 6 caracteres presentes na palavra |
ValidacoesStringTests | DeveContemAPalavraQualquerNoTexto | Ao passar um texto escrito "Esse é um texto qualquer" e procurar pela palavra "qualquer", deve retornar verdadeiro pois a palavra existe no texto |
ValidacoesStringTests | NaoDeveConterAPalavraTesteNoTexto | Ao passar um texto escrito "Esse é um texto qualquer" e procurar pela palavra "teste", deve retornar falso pois a palavra não existe no texto |
ValidacoesStringTests | TextoDeveTerminarComAPalavraProcurado | Ao passar um texto escrito "Começo, meio e fim do texto procurado" e procurar pela palavra "procurado", deve retornar verdadeiro pois a palavra existe no texto e está inclusa no final do texto |
O código de testes está pela metade, e você deverá dar continuidade implementando os testes descritos acima, para que no final, tenhamos um programa de testes funcional. Procure pela palavra comentada "TODO" no código, em seguida, implemente conforme as regras acima.
-
Clone ou baixe este repositório para a sua máquina local.
-
Certifique-se de ter o Node.js e .NET 8.0 instalado em sua máquina.
-
Abra o terminal e navegue até o diretório raiz do projeto.
-
Para corrigir os erros, utilize o comando:
dotnet build
- Para executar o teste, utilize o comando:
dotnet test
Este projeto foi desenvolvido como parte de avaliação de desafio do Decola Tech Avanade 4ª Edição 2024, para avaliar o ensinado na bootcamp sobre Testes Unitários da linguagem de programação C#
.
Nota: Este projeto é apenas para fins educacionais e não possui nenhuma afiliação oficial com a franquia DIO ou Avanade ou suas empresas associadas.
![]() |
Rhayssa Kramer
Desenvolvedora Full Stack |