Rest Assured
Instalação, clients, schemas, segurança, OpenAPI e CI — 98 testes
Automação · Java 17 · Spring Petclinic RESTBiblioteca Java para testar APIs REST com DSL fluente — integra com JUnit 5, Hamcrest e Allure.
given() · when() · then()Records, text blocks, modern language features.
API Petclinic + testes em containers isolados.
CI com service container e Allure no Pages.
@Epic, @Feature, @Story e anexos de rede.
docker compose up --abort-on-container-exit --exit-code-from tests
mvn clean test
mvn allure:serve
src/test/java/com/portfolio/petclinic/
├── base/ BaseTest — setup compartilhado
├── clients/ OwnersClient, PetsClient, ...
├── models/ POJOs de request/response
├── tests/ Suites JUnit 5
│ ├── advanced/
│ ├── flows/
│ └── negative/
└── utils/ ConfigLoader, TestDataFactory, validators
public Response getAllOwners() {
return given()
.spec(requestSpec)
.when()
.get("/owners");
}
Specs nunca chamam RestAssured.given() diretamente — use clients.
@Test
void shouldReturnAllOwnersWithValidStructure() {
Response response = ownersClient.getAllOwners();
ResponseValidator.assertStatusCode(response.getStatusCode(), 200);
ResponseValidator.assertFirstArrayItemMatchesSchema(
response.getBody().asString(), "schemas/owner-schema.json");
}
owner-schema.json — respostas de ownerpet-schema.json — respostas de petproblem-detail-schema.json — erros RFC 7807Schemas em src/test/resources/schemas/
Owner ownerPayload = TestDataFactory.buildOwner();
PetFields pet = TestDataFactory.buildPetFields(typeId, typeName);
JavaFaker evita colisões e dados fixos em paralelo.
@ParameterizedTest(name = "GET /owners/{0} should return {1}")
@CsvSource({ "99999, 404", "0, 404" })
void shouldReturnExpectedStatusForInvalidOwnerIds(int id, int status) {
Response response = ownersClient.getOwnerById(id);
ErrorResponseValidator.assertErrorStatusAndOptionalProblemDetail(...);
}
NetworkInspector.attachLastExchangeToAllure(networkCapture);
NetworkInspector.assertLastRequestUriContains(networkCapture, "/pets");
NetworkInspector.assertResponseSequenceContains(networkCapture, "/owners", "/pets/");
/audit/owner-createdWireMock.verify() com JSON exatoOwners, Pets, Visits, Vets, Specialties, PetTypes, API v2.
Actuator health + OpenAPI /v3/api-docs.
Basic Auth, RBAC, POST /users na API :9967.
SLA, integridade referencial, content negotiation.
visitsClient.addVisit(ownerId, petId, visitFields);
visitsClient.updateVisit(visitId, updatePayload);
ownersClient.getOwnerPetById(ownerId, petId);
ownersV2Client.getOwnersPage(0, 2, lastName);
9966 — API aberta (dev/Docker padrão)9967 — PETCLINIC_SECURITY_ENABLE=trueOwnersClient.secured() · withCredentials()@Tag("security") para suite isoladamvn test -Dtest.groups=smoke
mvn test -Dtest.groups=security
mvn test -Dtest.groups=performance
mvn test -Dtest.groups=contract
mvn clean test — 98 testesmainExecute a suite e explore os walkthroughs bloco a bloco.
github.com/lflucasferreira/rest-assured