📡 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étodothen()para criar validações poderosas sem escrever uma única linha de código extra. 🚀