Документация Tester DSL: миграция с JUnit/RestAssured

Миграция с JUnit + RestAssured на Mockarty Tester

JUnit + RestAssured — каноничный Java HTTP test-стек. Mockarty Tester
DSL — drop-in альтернатива с мульти-протокольным охватом (gRPC /
GraphQL / Kafka / WebSocket / SOAP / DB помимо HTTP) и first-class
интеграцией с Allure / TCM.

Кратко

RestAssured Mockarty Tester (Java)
given().get(url) t.http().get(url)
.statusCode(200) .expectStatus(200)
.body("name", equalTo("Alice")) .expectJsonPath("$.name", "Alice")
.body("roles.size()", equalTo(2)) .expectJsonArrayLen("$.roles", 2)
.header("X", equalTo("y")) .expectHeader("X", "y")
Тело запроса JSON .json(Map.of(...))
extract().path("$.token") .extract("$.token", "token")
header("Authorization", token) .header("Authorization", token)
RequestSpecBuilder Tester.Builder
@BeforeEach setup Обычный Java-код перед чейном

Параллельный пример

RestAssured + JUnit 5

import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

class LoginFlowTest {
    @Test
    void loginAndMe() {
        RestAssured.baseURI = "http://localhost:8080";
        String token = given()
            .contentType("application/json")
            .body("{\"user\":\"alice\"}")
            .post("/login")
            .then().statusCode(200)
            .extract().path("$.token");

        given()
            .header("Authorization", "Bearer " + token)
            .get("/me")
            .then().statusCode(200)
            .body("user", equalTo("alice"));
    }
}

Mockarty Tester

import ru.mockarty.tester.Tester;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

class LoginFlowTest {
    @Test
    void loginAndMe() {
        Tester t = new Tester.Builder().baseUrl("http://localhost:8080").build();
        t.http().post("/login")
            .json(Map.of("user", "alice"))
            .expectStatus(200)
            .extract("$.token", "token");
        t.http().get("/me")
            .header("Authorization", "Bearer {{token}}")
            .expectStatus(200)
            .expectJsonPath("$.user", "alice");
        t.finish();
        assertTrue(t.ok(), () -> t.errors().toString());
    }
}

Зачем мигрировать

  • Один DSL — много протоколов. Заменяет RestAssured + Pact + Kafka
    consumer test + gRPC stub одним Tester chain’ом который последо-
    вательно вызывает .http(), .kafka(client), .grpc(client) и
    шарит {{var}} store между ними.
  • Allure-вывод из коробки. Оберни тест в SDK Allure scope —
    каждый вызов чейна летит как Allure-шаг.
  • Загрузка в TCM одним вызовом. ExternalRunBridge.toExternalRunRequest(t, opts)
    маппит результат Tester’а на external-run payload для TCM.

Загрузка результата в TCM

import ru.mockarty.tester.ExternalRunBridge;

client.externalRuns().report("qa",
    ExternalRunBridge.toExternalRunRequest(t,
        new ExternalRunBridge.Options()
            .caseName("Login flow")
            .autoCreate(true)));

См. также Java SDK README
для полной справки по чейну и протокол-специфичным facet’ам.