O JUnit 5 é um framework open-source amplamente utilizado na criação de testes unitários automatizados na linguagem de programação Java. Pedro quer escrever uma classe que represente um teste unitário usando este framework. É correto afirmar que esta classe de teste deve
- A)ser declarada com o modificador de classe abstract.
Errada: a classe de teste não precisa ser abstract; ao contrário, ela deve ser concreta para o JUnit conseguir instanciá-la.
- B)ser declarada como private class.
Errada: uma classe private não é acessível ao framework de testes e, por isso, não serve para essa finalidade.
- C)ter ao menos um método anotado com @TestCase.
Errada: no JUnit 5 não existe a anotação @TestCase; a anotação usada para testes é @Test.
- D)ter um único construtor.
Certa: a classe de teste deve ter um único construtor, permitindo que o JUnit 5 a instancie corretamente.
- E)ser anotada com @Enabled para ser executada.
Errada: não existe anotação @Enabled como requisito geral para execução; o teste executa com @Test e @Enabled é usada em contexto específico de habilitação/desabilitação.
Gabarito: D
No JUnit 5, a classe de teste não precisa de firula: ela deve ser uma classe concreta, acessível ao framework e organizada de acordo com as regras do Jupiter. O detalhe cobrado pela banca aqui é que a classe de teste pode ter apenas um construtor, porque o JUnit precisa conseguir instanciar a classe de forma previsível antes de executar os métodos de teste. Na prática, o framework cria uma nova instância da classe de teste para executar os testes, o que ajuda no isolamento entre eles. Por isso, não faz sentido exigir que a classe seja abstract, nem que seja private, porque o JUnit precisa enxergá-la e instanciá-la. Também não existe anotação @TestCase no JUnit 5; o marcador clássico é @Test. A alternativa D está correta porque a classe de teste deve possuir um único construtor. Isso está alinhado com a forma como o JUnit Jupiter trabalha com criação de instâncias e injeção de dependências, permitindo que o framework saiba exatamente como montar o objeto de teste. Em termos práticos, é a regra que a banca quer que você reconheça quando pensa em estrutura de classe de teste no JUnit 5. Resumo de prova: se a questão falar em classe de teste no JUnit 5, desconfie de palavras como abstract, private e anotações inventadas. O básico é lembrar que os testes são executados por métodos anotados e que a classe precisa ser instanciável pelo framework.