⚙️ 5.2 O Primeiro Teste de Sistema de Elite

Mover de um script main para uma suíte de testes profissional exige o uso de um framework de teste robusto. Utilizaremos o JUnit 5 e o AssertJ para garantir que nossas validações sejam legíveis e precisas.

🏁 Cenário: Fluxo de Cadastro de Usuário

Vamos validar se o sistema persiste e exibe corretamente um novo usuário após o preenchimento do formulário.

📄 src/test/java/…/system/UsuariosSystemTest.java

import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
 
class UsuariosSystemTest {
    private WebDriver driver;
 
    @BeforeEach
    void setup() {
        WebDriverManager.chromedriver().setup();
        this.driver = new ChromeDriver();
    }
 
    @AfterEach
    void teardown() {
        if (driver != null) driver.quit();
    }
 
    @Test
    @DisplayName("Deve cadastrar um novo usuário e exibi-lo na listagem")
    void deveAdicionarUmUsuario() {
        driver.get("http://localhost:8080/usuarios/new");
 
        // ✅ Interação Fluída
        var nome = driver.findElement(By.name("usuario.nome"));
        var email = driver.findElement(By.name("usuario.email"));
 
        nome.sendKeys("Engenheiro de Elite");
        email.sendKeys("elite@empresa.com.br");
        nome.submit();
 
        // 🛡️ Validação AssertJ: Elevando o nível da inspeção
        var pageSource = driver.getPageSource();
        assertThat(pageSource)
            .contains("Engenheiro de Elite")
            .contains("elite@empresa.com.br");
    }
}

📊 Ciclo de Vida do Teste E2E

  1. Arrange: O navegador é aberto e posicionado na URL de cadastro.
  2. Act: O formulário é preenchido e submetido.
  3. Assert: O sistema valida se os dados retornados na listagem conferem com o input.

Testes Frágeis (Flaky) ⚡

Validar o getPageSource() é simples, mas pode falhar se palavras parecidas aparecerem em outros lugares da página. Nos próximos capítulos, veremos como validar elementos específicos usando seletores CSS e IDs únicos. 🚀


Dica de Ouro ⚡

Sempre utilize @AfterEach com driver.quit(). Se o seu teste falhar no meio e você não fechar o navegador, seu computador rapidamente ficará sem memória RAM devido aos processos “zumbis” do Chrome. 🏁


⬅️ Capítulo Anterior | Próximo Capítulo ➡️