Pular para o conteúdo principal

Questão de Programação — JUnit — FGV 2024

ProgramaçãoJUnit
Código
fg075156
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
O trecho código a seguir mostra um trecho de um sistema de biblioteca digital feita em JAVA e também o código de testes unitários com JUnit para as funções de inserção e remoção.Imagem associada para resolução da questãoConsiderando que a lista de livros da biblioteca esteja vazia, o código de execução de testes unitários testLista garante que a lista de livros
  1. Afica vazia mesmo após inserção.
  2. Bvolta a ser vazia após inserção e remoção.
  3. Cnão gera erro ao remover um livro que não existe.
  4. Dnão remove o livro após ser inserido.
  5. Etem um conteúdo incerto que não pode ser determinado.
Revelar gabarito e comentário

GabaritoB — volta a ser vazia após inserção e remoção.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Testes unitários com JUnit: inserção e remoção em uma lista

Gabarito: letra B. O teste testLista garante que a lista de livros volta a ser vazia após inserção e remoção, pois o teste insere um livro e depois o remove, verificando que a lista fica vazia ao final. Essa é a sequência lógica de um teste que valida as operações de inserção e remoção em uma estrutura de dados, e é o que a alternativa B descreve corretamente.

O JUnit é um framework de testes unitários para Java, amplamente utilizado para verificar se métodos e classes se comportam como esperado. Um teste unitário típico segue o padrão arrange-act-assert (preparar, agir, verificar): primeiro, configura-se o estado inicial; depois, executa-se a operação a ser testada; por fim, verifica-se se o resultado é o esperado. No caso de uma lista de livros, o teste testLista provavelmente faz algo como: cria uma biblioteca vazia, insere um livro, verifica que a lista não está vazia, remove o livro e verifica que a lista está vazia novamente. Essa é a forma mais comum de testar operações de inserção e remoção, garantindo que ambas funcionem corretamente em conjunto.

A questão pede que se considere que a lista de livros está vazia no início. Isso é crucial, pois elimina qualquer interferência de dados pré-existentes. O teste, então, insere um livro (a lista passa a ter um elemento) e depois o remove (a lista volta a ficar vazia). A alternativa B captura exatamente esse comportamento: a lista volta a ser vazia após inserção e remoção. As demais alternativas descrevem cenários que não correspondem ao que um teste bem escrito faria, como veremos a seguir.

A pegadinha desta questão está em interpretar o que o teste realmente verifica. Muitos candidatos podem pensar que o teste apenas verifica a inserção (alternativa D) ou que a lista fica vazia mesmo após a inserção (alternativa A), mas o teste, ao inserir e depois remover, valida o ciclo completo. A alternativa C, por sua vez, fala sobre remover um livro que não existe, o que não é o foco do teste descrito. A alternativa E é uma armadilha, pois sugere que o resultado é incerto, quando na verdade o teste tem um resultado determinístico.

  1. 1Lista vazia (arrange)
  2. 2Insere livro (act)
  3. 3Lista não vazia (assert)
  4. 4Remove livro (act)
  5. 5Lista vazia (assert)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que a lista fica vazia mesmo após a inserção. Isso contradiz a lógica de um teste de inserção: se o teste insere um livro, a lista deve conter esse livro, portanto não pode permanecer vazia. A alternativa confunde o estado inicial (vazio) com o estado após a inserção (não vazio).

Alternativa B — ✅ Correta ⟵ GABARITO

Descreve exatamente o ciclo do teste: a lista começa vazia, recebe uma inserção (passa a ter um elemento) e, após a remoção, volta a ser vazia. Essa é a sequência esperada em um teste que valida as operações de inserção e remoção em conjunto, garantindo que ambas funcionem corretamente.

Alternativa C — ❌ Incorreta

Menciona que o teste garante que não há erro ao remover um livro que não existe. Embora seja um comportamento desejável em alguns sistemas, não é o que o teste testLista verifica, pois o teste insere um livro antes de removê-lo. A remoção de um livro inexistente seria um caso de teste separado, não o foco deste teste.

Alternativa D — ❌ Incorreta

Afirma que o teste garante que o livro não é removido após ser inserido. Isso é o oposto do que um teste de remoção faz: ele verifica que a remoção funciona, ou seja, que o livro é removido. A alternativa inverte o objetivo do teste.

Alternativa E — ❌ Incorreta

Diz que o conteúdo da lista é incerto e não pode ser determinado. Isso é falso, pois o teste tem um comportamento determinístico: insere um livro e depois o remove, resultando em uma lista vazia. Não há incerteza no resultado.

Gabarito: letra B

Link permanente: /questoes/fg075156