Миграция с 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 однимTesterchain’ом который последо-
вательно вызывает.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’ам.