O analista de sua empresa solicitou um teste, com base em JUnit 5, para uma função de leitura de valores inteiros a partir de um socket. Esse teste deve abrir a conexão, verificar um lote de 30 valores recebidos e fechar a conexão ao final. Para criar o teste, uma das ações necessárias é:
- A)interromper o fluxo de leitura com fail;
Errada, porque fail serve para forçar a falha do teste, não para interromper o fluxo de leitura como etapa normal de validação.
- B)anotar o método que abre a conexão com @AfterClass;
Errada, porque @AfterClass é anotação do JUnit 4, enquanto o enunciado pede JUnit 5, que usa @AfterAll.
- C)testar cada valor recebido com assertInteger;
Errada, porque não existe assertInteger no JUnit 5; o usual é usar assertEquals, assertTrue e outros asserts da API.
- D)fechar a conexão em um método anotado com @AfterAll;
Certa, porque a conexão deve ser fechada ao final do conjunto de testes, e @AfterAll executa justamente essa limpeza final.
- E)anotar o método que testa o valor com @BeforeEach.
Errada, porque @BeforeEach é usada para preparar cada teste antes de sua execução, não para testar valor nem para fechar recursos.
Gabarito: D
No JUnit 5, a ideia é organizar o teste em etapas bem claras: preparar o ambiente, executar a verificação e, por fim, limpar tudo. Quando o teste envolve recurso externo, como socket, isso fica ainda mais importante, porque deixar conexão aberta é convite para problema, travamento e sujeira no ambiente de teste. Em outras palavras: abriu, testou, fechou. Simples e elegante. Neste caso, o enunciado pede um teste que abre a conexão, confere um lote de 30 valores recebidos e encerra a conexão ao final. O ponto-chave está justamente no encerramento do recurso. Em JUnit 5, o método que deve ser executado depois de todos os testes da classe é anotado com @AfterAll, que é a anotação adequada para fazer a limpeza final. Por isso, o gabarito é a letra D. Fechar a conexão em um método com @AfterAll garante que isso ocorra após a execução de todos os testes daquela classe, o que é perfeito para recursos compartilhados como socket. Como lembrete, em JUnit 5, @AfterAll substitui a antiga ideia de encerramento global do JUnit 4 com @AfterClass, mas agora dentro da sintaxe nova da plataforma JUnit Jupiter.