📡 6.2 O Primeiro Teste de API com REST-assured 5

Adeus, com.jayway. Bem-vindo, io.rest-assured. Nesta versão moderna, a fluidez é levada ao extremo. Utilizaremos a estrutura Given-When-Then (BDD) para descrever nossos testes de API.

🏁 Cenário: Listagem de Usuários (XML)

Vamos validar se o endpoint retorna a lista esperada e se o status code é 200 OK.

📄 src/test/java/…/api/UsuariosApiTest.java

import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import org.junit.jupiter.api.*;
 
class UsuariosApiTest {
 
    @BeforeAll
    static void setup() {
        // ✅ Configuração Global da URL Base
        baseURI = "http://localhost:8080";
    }
 
    @Test
    @DisplayName("Deve retornar a lista de usuários em formato XML")
    void deveRetornarListaDeUsuarios() {
        given()
            .accept("application/xml")
        .when()
            .get("/usuarios")
        .then()
            .statusCode(200)
    }
}

🏗️ Entendendo a DSL de Elite

  • given(): Define as condições (Headers, Params, Cookies, Auth).
  • when(): Define a ação (GET, POST, PUT, DELETE).
  • then(): Define as expectativas (Assertions sobre status, corpo e headers).

Validação Integrada 🛡️

O método .body("path", matcher) utiliza o GPath (baseado em Groovy) para navegar pelo XML/JSON. Você não precisa mais fazer o “unmarshall” manual para validar campos específicos. 🏁


📊 Ciclo de Vida Given-When-Then

flowchart LR
    A["Given (Config)"] --> B["When (Disparo)"]
    B --> C["Then (Validação) ✨"]
    style C fill:#f1f8e9,stroke:#558b2f,stroke-width:2px

Dica de Ouro ⚡

Utilize Hamcrest Matchers (is(), hasItem(), containsInAnyOrder()) dentro do método then() para criar validações poderosas sem escrever uma única linha de código extra. 🚀


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