Este projeto acadêmico, desenvolvido para a disciplina de Testes de Software, implementa uma funcionalidade para a consolidação parcial de notas de uma turma de graduação. O sistema calcula o status de aprovação dos alunos com base em seu desempenho acadêmico e frequência. O desenvolvimento foi guiado pela metodologia de Test-Driven Development (TDD) e a automação de testes foi realizada com JUnit 5.
O sistema calcula o status de um aluno matriculado (APR, REC, REP, etc.) com base nas seguintes regras de aprovação:
O aluno é considerado aprovado se atender a todos os seguintes critérios:
- Média parcial igual ou superior a 6,0.
- Nenhuma nota de unidade avaliativa inferior a 4,0.
- Frequência mínima de 75%.
O aluno tem direito à avaliação de reposição se:
- Atingir a frequência mínima de 75%.
- Sua média parcial for igual ou superior a 3,0 e inferior a 6,0.
O aluno é reprovado se:
- Sua média parcial for inferior a 3,0 (
REP). - Não atingir a frequência mínima de 75% (
REPF).
O projeto foi criado e gerenciado com o Apache Maven, utilizando o archetype maven-archetype-quickstart. A estrutura de diretórios segue o padrão Maven:
src/main/java: Contém o código-fonte da aplicação, incluindo as classesMatricula,Discente,Turma, etc.src/test/java: Contém o código de teste.pom.xml: Arquivo de configuração que gerencia as dependências do projeto, como o JUnit 5.
Para garantir a qualidade e a corretude da implementação, foi desenvolvida uma suíte de testes robusta com JUnit 5, cobrindo os seguintes aspectos:
- Test-Driven Development (TDD): O método
calcularMediaParcial()foi desenvolvido seguindo o ciclo TDD: criar um teste que falha, implementar a funcionalidade para o teste passar e refatorar o código. - Testes de Exceção: Foram implementados testes para garantir que os métodos de cadastro de notas e frequência lançam uma
IllegalArgumentExceptionquando recebem valores fora do intervalo válido (Notas: 0-10, Frequência: 0-100). - Testes Parametrizados: O método
consolidarParcialmente()é validado através de testes parametrizados com a anotação@CsvSource, cobrindo todos os possíveis status de aprovação com diferentes cenários.
Para compilar e testar este projeto, você precisará ter o Java (JDK) e o Apache Maven instalados e configurados no seu sistema.
-
Java Development Kit (JDK):
- Este projeto foi desenvolvido e testado com Java 17. Versões superiores (como Java 21) também são compatíveis.
-
Apache Maven:
- É necessário ter o Maven instalado. Para verificar se ele está configurado corretamente, abra o terminal e execute o comando:
mvn -v
- Se o comando não for encontrado, você pode seguir o guia de instalação no site oficial do Maven.
- É necessário ter o Maven instalado. Para verificar se ele está configurado corretamente, abra o terminal e execute o comando:
-
Clone o Repositório
- Clone este repositório para a sua máquina local.
-
Navegue até a Pasta do Projeto
- Abra o terminal e entre na pasta raiz do projeto (a pasta que contém o
pom.xml).
- Abra o terminal e entre na pasta raiz do projeto (a pasta que contém o
-
Compile o Projeto
- Execute o comando de compilação do Maven. Ele irá baixar as dependências (como o JUnit 5) e compilar todo o código-fonte.
mvn compile
- Execute o comando de compilação do Maven. Ele irá baixar as dependências (como o JUnit 5) e compilar todo o código-fonte.
-
Rode a Suíte de Testes (Ação Principal)
- O objetivo principal deste projeto é a suíte de testes automatizados. Para executá-la, use o comando:
mvn test - Este comando executará todos os testes e, se tudo estiver correto, você verá a mensagem
BUILD SUCCESSno final, indicando que a lógica de negócio e as validações estão funcionando como esperado.
- O objetivo principal deste projeto é a suíte de testes automatizados. Para executá-la, use o comando:
Para a submissão desta atividade, o projeto deve seguir as seguintes especificações:
- O campo
groupIdno arquivopom.xmldeve ser alterado para o nome completo do aluno em formato camelCase (ex:joaoSilvaSantos). - O projeto final deve ser compactado em um arquivo
.zip, nomeado com o nome completo do aluno no mesmo formato (ex:joaoSilvaSantos.zip).
- Nome: Vinicius Davi
- Projeto: Atividade Prática - Automatização de Testes e Test-Driven Development