Questão nº 51
Questão de Tecnologia da Informação · FCC TRT-20 2016 (nº 51)
FCC2016Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓
Em um método de uma classe de teste JUnit deseja-se testar o método estático chamado multiplica da classe Vetores. Para verificar se a saída desse método será 39 quando ele receber como parâmetro os arrays de números inteiros {3,4} e {5,6} utiliza-se a instrução
- A`multiplica(new int{ 3, 4}, new int{ 5, 6}).assertEquals(39);`
- B`assertEquals(39, Vetores.multiplica(new int[] { 3, 4}, new int[] { 5, 6}));` (alternativa correta)
- C`Vetores.multiplica.assertTrue(new int{ 3, 4}, new int{ 5, 6}).assertEquals(39);`
- D`Vetores.multiplica.assertFalse(39, (new int[] { 3, 4}, new int[] { 5, 6}));`
- E`multiplica.assertTrue(39, (new int[] { 3, 4}, new int[] { 5, 6}));`
Resposta comentada
Gabarito Alternativa B
Em testes JUnit, usamos métodos de asserção (como assertEquals) para verificar se o resultado de uma operação (o valor atual) corresponde ao que esperamos (o valor esperado).
- (A) Incorreta: O método
multiplicaé estático e pertence à classeVetores, então deveria ser chamado comoVetores.multiplica(...). Além disso, o resultado demultiplicaé um número inteiro (int), que não possui um método.assertEquals(). A sintaxenew int{ 3, 4}para criar um array também está incorreta; o correto serianew int[] { 3, 4}. - (B) Correta: Esta é a forma padrão de realizar uma asserção de igualdade no JUnit. O primeiro argumento de
assertEqualsé o valor esperado (39), e o segundo é o valor atual, que é o resultado da chamada ao método estáticoVetores.multiplicacom os parâmetros corretos (new int[] { 3, 4}enew int[] { 5, 6}). - (C) Incorreta: Não se pode chamar
.assertTrue()diretamente em uma referência ao métodoVetores.multiplica.assertTrueé um método de asserção que recebe um booleano. A sintaxe para criar o array está errada (new int{ 3, 4}), e encadear.assertEquals(39)apósassertTruetambém não faz sentido, poisassertTruenão retorna um objeto que tenha esse método. - (D) Incorreta: O método
assertFalseé usado para verificar se uma condição é falsa, não para comparar um valor esperado com um valor atual diretamente dessa forma. A chamadaVetores.multiplica.assertFalseestá incorreta, e a forma de passar os argumentos(new int[] { 3, 4}, new int[] { 5, 6})é uma sintaxe inválida em Java para esse contexto. - (E) Incorreta: A chamada ao método estático
multiplicadeve ser precedida pelo nome da classe (Vetores.multiplica). Assim como na alternativa D,assertTruenão é usado para comparar um valor numérico esperado com o resultado de uma função dessa maneira, e a sintaxe dos argumentos é inválida.
Fonte: FCC TRT-20 2016 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.