Wir haben REST Webservice. Es funktioniert über JSON-Datendarstellung. Ich möchte Funktionstests anbieten. Ich plane, RestAssured framework zu verwenden. Es bietet verständliche Methoden zum Testen der Korrektheit von Ausgabe-JSON.So trennen Sie die Geschäftslogik in RestAssured
Beispiel, get("/method").then().assertThat().body("obj.field", equalTo(5));
Aber ein Problem auftreten: Wenn json Struktur ändert sich, alle Tests sind ungültig. Wenn zum Beispiel field
in field2
umbenannt werden soll, müssen alle Tests mit dem Auftreten von field
behoben werden. Das Problem ist dem Testen von Webseiten sehr ähnlich, wo wir das Vorhandensein einiger Webelemente usw. überprüfen sollten. Gibt es eine ähnliche Lösung für das Testen von REST API, oder könnten Sie etwas Elegantes empfehlen?
Wenn Sie der Meinung sind, dass Ihre Frage immer noch nicht ausreichend beantwortet wird, bearbeiten und fügen Sie weitere Details hinzu. –
Vielen Dank für nützliche Links. Es scheint, dass ich Folgendes tun sollte: 1. Java-Klassen erstellen, 2. jsons, die von Webservice erhalten wurden, zu diesen Klassen deserialisieren, 3. Validierungsmethoden für diese Klassen schreiben. 4. Validierungsmethoden verwenden, die oben in meinen Tests erwähnt wurden.Im Falle von JSON-Änderungen sollte ich die Namen der Felder der Java-Klassen ändern und die Validierungsmethoden entsprechend anpassen, aber die Tests bleiben korrekt. Bitte korrigieren Sie mich, wenn ich falsch liege – Anton
Ich denke, es hängt von der Tiefe (und Länge - Zeit) der Prüfung erforderlich. Ich habe in der Vergangenheit ziemlich genau das getan, was Sie beschrieben haben, und ein Framework geschrieben, um die tatsächlichen Objekte mit erwarteten Objekten (oder den relevanten Teilen) zu vergleichen. Es gibt Kosten, die nicht trivial sind - 1. Schreiben des Frameworks 2. Beibehalten des Frameworks und Ihrer Objekte (halten Sie sie auf dem Laufenden mit den Antworten). Wenn dies wie Overkill scheint, könnten Sie einfach die relevanten Teile der Antwort testen, ohne zuerst das Mapping in Objekte durchzuführen, mit JSON Path usw. –