Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Estou com dúvida no curso de Testando sua Aplicação Web com Selenium, no exercício 30 do capítulo Melhorando nosso código de teste com Page Objects.

Há um problema aqui. Ao rodarmos todos os testes teremos mais de uma linha na tabela designando mais de um usuário, mas com as mesmas informações - fazendo com que este teste de deleção eventualmente falhe.

2 respostas
solução!

Fala Gilberto, blz?

Cara, existe uma url na aplicação que limpa o banco todo certo?

A solução é vc criar um método setUp na sua calsse de testes e anotar com @Before, e neste método vc realizar a limpeza o seu banco.

O ideal em testes de unidade é ele ser totalmente independente dos outros, então no seu teste de exclusão, realize também uma inserção e depois a exclusão, veja um exemplo:

@Test
    public void deveCadastrarEDepoisExcluirUmUsuario(){
        usuarios.novo().cadastra("Batman", "batm@n.com");
        assertTrue(usuarios.existeNaListagem("Batman", "batm@n.com"));

        int posicao = 2;

        usuarios.exclui(posicao);

        assertFalse(usuarios.existeNaListagem("Batman", "batm@n.com"));

    }

E o método exclui..

public void exclui(int posicao) {
        driver.findElements(By.tagName("button")).get(posicao - 1).click();
        // pega o alert que está aberto
        Alert alert = driver.switchTo().alert();
        // confirma
        alert.accept();
    }

Espero ter ajudado!

Concordo com a colocação do Felipe, pois o teste tornou-se dependente dos demais, em função dele depender de registros informados anteriormente.