2
respostas

private FirefoxDriver driver;

Na Aula 02, melhorando o código, pedem para utilizar a anotação @Before, e o seguinte código:

public class novoUsuario {
private FirefoxDriver driver;
@Before
public void inicializa(){
driver = new FirefoxDriver();

}

A minha dúvida é porque não fazer da seguinte maneira

public class novoUsuario {
// sem esse código de baixo
    //private FirefoxDriver driver;
    @Before
    public void inicializa(){
        // e utilizar o código abaixo
    WebDriver = new FirefoxDriver();
}

Porque colocando WebDriver = new FirefoxDriver();, direto na anotação @Before, o resto do código não funciona?

utilizando dessa forma, no restante do código diz que driver parece não ser encontrado.

2 respostas

Olá Pedro,

por limitação do JUnit, nós só conseguimos anotar métodos com o @Before. A ideia é que este método será executado antes de cada métodos anotado com o @Test. O problema é que se você definir o driver apenas dentro do inicializa(), o Java marca que escopo dele termina dentro do inicializa, você não conseguirá chamar nos outros métodos de teste.

Por isso você precisa do atributo privado na classe, por ai sim você terá uma variável cujo escopo é compartilhado por todos os métodos.

Pedro, tudo bem ?

É que você precisa ter acesso a essa referencia de alguma forma.

Esse método inicializa vai ser chamado antes de todos os testes, cada teste é executado dentro de uma thread diferente, por esse motivo precisa ter uma variável para podermos brincar.

Além disso, o código não compila :

WebDriver = new FirefoxDriver();

Lembra que para ter uma variável ser valida, você precisa dar um nome a ela, nesse caso ela não possui um nome.

Agora lembro um pouco sobre a questão de escopo, se você criar alguma variável dentro desse método, ela não estará acessível fora dele, por esse motivo deixamos como atributo da classe e a inicializamos dentro desse método.

Espero ter ajudado.

Abraços