Primeira Avaliação 📝
Questões práticas
- Crie um teste unitário em JUnit 5 que verifique se o método multiplicar(int a, int b) da classe Calculadora retorna corretamente o resultado da multiplicação de dois números.
- Implemente um teste unitário em JUnit 5 para o método contarCaracteres(String texto) da classe UtilTexto.
- O teste deve verificar se, ao passar a string “java”, o método retorna o valor 4.
- Crie um teste unitário em JUnit 5 que verifique se o método ehPositivo(int numero) da classe Verificador retorna true quando recebe o valor 5 e false quando recebe o valor -3.
- Crie um teste unitário em JUnit 5 que verifique se o método dividir(int a, int b) da classe Calculadora lança uma exceção do tipo ArithmeticException quando o valor de b é igual a zero. Utilize assertThrows para validar o lançamento da exceção.
- Crie um teste unitário em JUnit 5 que verifique se o método buscar(String id) da classe Repositorio lança uma exceção do tipo IllegalArgumentException quando recebe uma string nula. Utilize assertThrows e verifique se a mensagem da exceção é “ID não pode ser nulo”.
- Utilizando Mockito e JUnit 5, crie uma classe de teste com a anotação @ExtendWith(MockitoExtension.class). Declare um mock da interface Repositorio com @Mock e configure o método buscarNome(1) para retornar “Maria” usando when(…).thenReturn(…). Verifique o resultado com assertEquals.
Questões teóricas
- O que representa “V&V” no contexto de desenvolvimento de software?
- A) Versão e Velocidade
- B) Validação e Verificação
- C) Visualização e Versatilidade
- D) Valor e Viabilidade
- Qual afirmativa descreve melhor a diferença entre verificação e validação?
- A) Verificação se concentra no código em execução, enquanto validação se concentra somente em documentos.
- B) Verificação é uma atividade dinâmica; validação é estática.
- C) Verificação avalia se o produto atende requisitos e especificações; validação se preocupa se atende às necessidades do usuário.
- D) Verificação é feita somente por testes manuais; validação é sempre automatizada.
- O que são inspeções no contexto de V&V?
- A) Testes automatizados para garantir desempenho sob carga.
- B) Revisões formais e sistemáticas de artefatos como documentos ou código, procurando erros e inconsistências.
- C) Simulações com usuários finais para verificar usabilidade.
- D) Compilação e execução de código em diferentes ambientes.
- Qual dos seguintes é um objetivo dos testes, conforme descrito no texto?
- A) Modificar requisitos que se mostraram inadequados.
- B) Reduzir o número de desenvolvedores necessários.
- C) Criar artefatos que substituam documentos de design.
- D) Executar o software em condições específicas para ver se ele se comporta como esperado.
- No planejamento de V&V, o que significa “rastreabilidade de requisitos”?
- A) Mapear os requisitos do produto para as atividades de V&V, garantindo que cada requisito seja verificado e validado.
- B) Rastrear os autores dos requisitos para responsabilização.
- C) Medir a quantidade de requisitos alterados durante o desenvolvimento.
- D) Registrar cada requisito em uma ferramenta de versionamento de código.
- Em que momento a validação deve ocorrer no ciclo de vida do software?
- A) Apenas após a entrega final ao cliente
- B) Somente na fase de testes de integração
- C) Ao longo de todo o processo de desenvolvimento, garantindo que o produto em construção atenda às necessidades do usuário
- D) Antes da definição de requisitos, para confirmar as metas do projeto
- Qual é a principal consequência de não realizar atividades adequadas de V&V durante o desenvolvimento de software?
- A) Aumento da velocidade de entrega do produto.
- B) Redução dos custos de manutenção a longo prazo.
- C) Possibilidade de entregar um produto que não atende aos requisitos ou às necessidades do usuário.
- D) Maior compatibilidade com diferentes sistemas operacionais.
- Qual dos ciclos de vida do Maven é responsável por limpar artefatos criados em builds anteriores?
- A) default
- B) site
- C) clean
- D) verify
- Qual é a fase do ciclo de vida default do Maven em que são executados testes unitários?
- A) validate
- B) compile
- C) test
- D) package
- Sobre plugins e goals no Maven: qual das afirmações abaixo está de acordo com o conteúdo explicado?
- A) Um plugin é uma tarefa específica, e um goal é o conjunto de plugins que compõem uma fase.
- B) Um goal é uma tarefa específica executada por um plugin; um plugin pode ter vários goals.
- C) Plugins servem só para empacotar o código e não para análise estática.
- D) Goals apenas determinam a versão do Maven utilizada no projeto.
- Em um projeto Maven, qual arquivo central contém as configurações, dependências e informações do projeto?
- A) build.gradle
- B) settings.xml
- C) project.json
- D) pom.xml
- Qual é a função do comando mvn package no Maven?
- A) Compilar o código-fonte do projeto.
- B) Executar os testes de integração.
- C) Empacotar o código compilado em um formato distribuível (como JAR ou WAR).
- D) Instalar dependências no repositório remoto.
- Em que formato o PMD pode gerar relatórios de análise?
- A) Apenas em PDF
- B) Somente em HTML
- C) Em diversos formatos, como XML, CSV e HTML
- D) Exclusivamente em JSON
- Qual é o principal objetivo do Checkstyle?
- A) Detectar falhas de segurança no código Java.
- B) Garantir que o código siga padrões de estilo e boas práticas de formatação.
- C) Executar testes unitários automaticamente.
- D) Gerar relatórios de cobertura de código.
- Qual é uma vantagem de integrar o Checkstyle ao ciclo de build do Maven?
- A) O Maven passa a compilar o código mais rapidamente.
- B) O Checkstyle substitui o compilador Java, evitando erros de sintaxe.
- C) O processo de build pode garantir automaticamente que o código siga padrões de estilo antes de ser aceito.
- D) A execução de testes unitários se torna opcional.
- Qual é o principal objetivo do JUnit?
- A) Facilitar a criação de interfaces gráficas em Java.
- B) Automatizar testes unitários para validar o comportamento do código.
- C) Compilar o código Java com maior eficiência.
- D) Substituir o Maven no gerenciamento de dependências.
- No JUnit 5, qual anotação deve ser usada para marcar um método como um caso de teste?
- A) @RunTest
- B) @Testing
- C) @Test
- D) @Execute
- O que acontece quando uma asserção falha em um teste JUnit?
- A) O teste continua normalmente até o fim.
- B) O compilador ignora o erro.
- C) O resultado do teste é marcado como “inconclusivo”.
- D) O teste é interrompido e marcado como falho.
- Qual anotação do JUnit 5 deve ser usada para indicar que um método de teste não deve ser executado?
- A) @Disabled
- B) @IgnoreTest
- C) @Skip
- D) @NoRun
- Qual é a principal finalidade de um objeto mock em testes unitários?
- A) Substituir o banco de dados de produção durante o desenvolvimento.
- B) Simular o comportamento de dependências externas para isolar o código em teste.
- C) Gerar relatórios de cobertura de código automaticamente.
- D) Compilar o código-fonte antes da execução dos testes.
- No Mockito, qual é a função da construção when(…).thenReturn(…)?
- A) Executar um método real e armazenar o resultado em cache.
- B) Definir o valor que um método simulado deve retornar quando chamado com determinados argumentos.
- C) Verificar se um método foi chamado durante o teste.
- D) Criar automaticamente uma instância real da classe testada.
- Qual anotação deve ser utilizada em uma classe de teste JUnit 5 para habilitar o uso de anotações do Mockito como @Mock?
- A) @RunWith(Mockito.class)
- B) @ExtendWith(MockitoExtension.class)
- C) @EnableMocks
- D) @MockitoSettings
- No Mockito, qual é a diferença entre @Mock e @Spy?
- A) @Mock cria um objeto real e @Spy cria um objeto simulado.
- B) @Mock cria um objeto totalmente simulado, enquanto @Spy envolve um objeto real permitindo monitorar e sobrescrever comportamentos pontuais.
- C) @Spy serve apenas para verificar exceções, enquanto @Mock serve para todos os cenários.
- D) Não há diferença; ambas as anotações possuem a mesma funcionalidade.

CC BY 4.0 DEED