Questão nº 47
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 47)
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 é:
- Ainterromper o fluxo de leitura com fail;
- Banotar o método que abre a conexão com @AfterClass;
- Ctestar cada valor recebido com assertInteger;
- Dfechar a conexão em um método anotado com @AfterAll; (alternativa correta)
- Eanotar o método que testa o valor com @BeforeEach.
Resposta comentada
Gabarito Alternativa D
As anotações de ciclo de vida do JUnit 5 (@BeforeAll, @AfterAll, @BeforeEach, @AfterEach) servem para configurar recursos (como abrir uma conexão) antes dos testes e liberá-los (como fechar uma conexão) depois.
- (A) Incorreta:
fail()é um método de asserção que falha um teste explicitamente; não é usado para gerenciar o ciclo de vida de recursos como uma conexão. - (B) Incorreta:
@AfterClassé uma anotação do JUnit 4. No JUnit 5, a anotação equivalente é@AfterAll, e ela é usada para fechar recursos depois de todos os testes da classe, não para abrir a conexão. - (C) Incorreta: Não existe uma asserção padrão do JUnit 5 chamada
assertInteger. As asserções são genéricas (ex:assertEquals,assertTrue) e esta alternativa descreve como testar, não como gerenciar a conexão. - (D) Correta: A anotação
@AfterAllno JUnit 5 é executada uma única vez, depois que todos os métodos de teste da classe foram executados. É o local ideal para fechar uma conexão que foi aberta para ser usada por todos os testes da classe, garantindo que o recurso seja liberado "ao final", como solicitado. - (E) Incorreta:
@BeforeEaché executado antes de cada método de teste individual. A conexão deve ser fechada ao final de todos os testes da classe, não antes de cada um, e esta anotação é para configuração (setup), não para encerramento (teardown). A armadilha aqui é confundir a necessidade de fechar a conexão uma vez ao final com uma ação que ocorre antes de cada teste, ou pensar que "testar o valor" é uma ação de setup. O método que testa o valor é o próprio@Test, e@BeforeEachprepara o ambiente para ele.
Fonte: FGV TJ-SE Servidor 2023 Técnico Judiciário - Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.