Questão nº 48

Questão de Engenharia de Software · FCC TRT24 2016 (nº 48)

FCC2016Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoEngenharia de Software
Gabarito: Bver comentário ↓

Considere que foi criado um teste de funcionalidade com o Selenium e o JUnit, no qual foram usados uma aplicação web, o Selenium server e o Selenium test client com o JUnit, em condições ideais. O objetivo é testar o tamanho de um combo box em uma página jsp. O Selenium abrirá um browser, chamará a página e testará a combo box. A página é acessível pela url: `http://localhost:8080/teste/pagina.jsp`. Com a aplicação web e o servidor Selenium executando adequadamente, o teste com JUnit é mostrado no trecho de código abaixo.

```java
private static DefaultSelenium selenium;

I
public static void setup() {
String url = "http://localhost:8080";
selenium = new DefaultSelenium("localhost", 4444,
"*firefox /usr/lib/firefox/firefox-bin", url);
selenium.start();
}

II
public static void tearDown() {
selenium.stop();
}

III
public void testSelectedIdOfSizeComboBox() {
selenium.open("/teste/pagina.jsp");
assertEquals("medium", selenium.getSelectedId("size"));
}
```

Neste cenário, as lacunas I, II e III são correta e respectivamente preenchidas com as anotações

Resposta comentada

Gabarito Alternativa B

JUnit utiliza anotações para organizar e controlar a execução dos testes, permitindo definir métodos que rodam antes ou depois dos testes, ou que marcam um método como sendo um teste.

(A) Incorreta: @Before e @After executam antes e depois de cada método de teste, respectivamente. Como os objetos selenium são static, eles devem ser inicializados e finalizados apenas uma vez por classe, não para cada teste. @TestRun não é uma anotação JUnit padrão.
(B) Correta: @BeforeClass é usada para métodos static que devem ser executados uma única vez antes de todos os testes da classe, ideal para inicializar recursos compartilhados como o DefaultSelenium. @AfterClass é usada para métodos static que devem ser executados uma única vez após todos os testes da classe, para liberar esses recursos. @Test marca um método como um método de teste JUnit.
(C) Incorreta: Embora @BeforeClass e @AfterClass estejam corretas, a anotação @Test(timeout==5000) possui sintaxe incorreta (deveria ser timeout = 5000L ou timeout = 5000). Além disso, o problema não especifica a necessidade de um timeout. Armadilha: A armadilha aqui é a sintaxe quase correta do timeout e a presença das anotações corretas para setup/teardown, levando o aluno a ignorar o erro de sintaxe ou a desnecessidade do timeout.
(D) Incorreta: @BeforeObject e @AfterObject não são anotações JUnit padrão. A sintaxe para expected também está incorreta (expected.Exception.class em vez de expected = Exception.class).
(E) Incorreta: @Before e @After são incorretas para setup/teardown static. A sintaxe para expected também está incorreta (expected.IllegalArgumentException.class em vez de expected = IllegalArgumentException.class).

Fonte: FCC TRT24 2016 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho