[JAVA] Testen Sie die Web-API mit junit

Testen Sie die Web-API mit jUnit und seien Sie versichert

Ich musste eine API testen, die das JSON-Format verwendet, daher fasse ich es unten zusammen. Ich überprüfe es, also denke ich, dass es einige Fehler gibt.

Dinge notwendig

Einstellungen anfordern

Rest-Assured konvertiert automatisch die für die Anforderung verwendete Objektklasse in Json. Diesmal benutze ich Jackson 2.

--Das Vorhandensein des Klassenpfads wird bestätigt und die Serialisierung in der folgenden Reihenfolge durchgeführt.

  1. Jackson2
  2. Jackson
  3. Gson

Da ObjectMapper verwendet wird, geben Sie die Einstellungen und das Verbindungsziel an.

//Hostname des API-Verbindungsziels
RestAssured.baseURI = "http://localhost"
//ObjectMapper-Einstellungen
RestAssured.config = RestAssuredConfig.config().objectMapperConfig(
        ObjectMapperConfig.objectMapperConfig().jackson2ObjectMapperFactory(new Jackson2ObjectMapperFactory() {
            @SuppressWarnings("rawtypes")
            @Override
            public ObjectMapper create(Class cls, String charset) {
                ObjectMapper objectMapper = new ObjectMapper();
                //ObjectMapper-Einstellungen hier

                return objectMapper;
            }
        })
);

Anfrage senden

//statischer Import
import static io.restassured.RestAssured.given;

ResponseClass response = given()
    .contentType(ContentType.JSON)  // content type
    .body(reqest)                   //Anfrage
.when()
    .post("/api/hoge/1")                 //Geben Sie den API-Endpunkt an
.then()
    .statusCode(200)
    .extract().as(ResponseClass.class);   //Deserialisieren Sie auf die angegebene Klasse

Antwort Behauptung

Verwenden Sie junit assert, um festzustellen, ob der erwartete Wert zurückgegeben wird.

Assert.assertThat(response.hoge, is("hoge"));

Zeichnen Sie die Übereinstimmungsbestätigung mit DbUnit und Excel auf

Mit DbUnit können Sie den aktuellen DB-Datensatz mit den als erwarteten Wert in Excel geschriebenen Daten vergleichen. Dies ist auch praktisch, da Sie DB-Datensätze in eine Excel-Datei schreiben können.

Connection connection = DriverManager.getConnection(url, username, password)
IDatabaseConnection iDbConnection = new IDatabaseConnection(connection);

//Daten nach der Ausführung
IDataSet dataSet = dbConn.createDataSet();

//Rufen Sie den Datensatz mit dem angegebenen Tabellennamen ab
ITable data= dataSet.getTable("table");

//Legen Sie Spalten fest, die Sie von der Bestätigung ausschließen möchten
data = DefaultColumnFilter.excludedColumnsTable(iTable, "created_at");

//Nach Spalte sortieren
data= new SortedTable(iTable, "hoge_name");


//Erwartungswertdaten(Excel)
ITable erwarteter Wert= new XlsDataSet(new File("hoge/huga/Erwarteter Wert.xls"));
Erwarteter Wert= DefaultColumnFilter.excludedColumnsTable(iTable, "created_at");
Erwarteter Wert= new SortedTable(iTable, "hoge_name");

//DbUnit Assertion, nicht junit assertEquals#Achten Sie darauf, assertEquals zu verwenden
Assertion.assertEquals(Erwarteter Wert, data);

Ich möchte Werte verschiedener Typen in Anforderungsparameter aufnehmen

//Anforderungsobjekt in MAP konvertieren
RequestObj request = new RequestObj():
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(request);
LinkedHashMap<String, Object> map = objectMapper.readValue(jsonString, new TypeReference<LinkedHashMap<String, Object>>(){});

//Irgendein Schlüssel:Wert einstellen
map.put("dinner", "Gegrilltes Fleisch")

//Konvertieren Sie die Karte in einen String
String jsonString = objectMapper.writeValueAsString(map);

//Setzen Sie die json-Zeichenfolge auf body und senden Sie die Anfrage
ResponseClass response  = given()
                .contentType(ContentType.JSON)
                .body(jsonString)
                .log().body()
            .when()
                .post(endpoint)
            .then()
                .log().body()
                .statusCode(200)
                .extract().as(responseClass);

Recommended Posts

Testen Sie die Web-API mit junit
Machen Sie einen Unit-Test mit Junit.
REST-API-Test mit REST Assured Part 2
[Java] Testen Sie private Methoden mit JUnit
Testen Sie den Spring Framework Controller mit Junit
Steuern Sie die Testreihenfolge in Junit4 mit einem Aufzählungstyp
So testen Sie den privaten Bereich mit JUnit
Der JUnit 5-Gradle-Test führt zu einem Fehler mit der Lombok-Annotation
Einführung eines automatisierten Java-Tests mit JUnit 5 + Gradle
Einführung automatisierter Java-Tests mit JUnit 5 + Apache Maven
So testen Sie Interrupts während Thread.sleep mit JUnit
Einfacher JUnit-Test der Elasticsearch 2018-Version mit Embedded-Elasticsearch
Testcode mit Mock mit JUnit (EasyMock Center)
Erstellen Sie einen Web-API-Server mit Spring Boot
Mischen Sie Testfälle mit JUnit 5 und Standardmethoden
Kompatibel mit Android 10 (API 29)
JUnit Teststart versuchen Sie etwas
Integrationstest mit Gradle
Automatisierung von Webanwendungstests
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
Automatisch mit Messgerät testen
Lasttest mit JMeter
Testen Sie den Inhalt einer Excel-Datei mit JUnit
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
[JUnit 5] Schreiben Sie einen Validierungstest mit Spring Boot! [Parametrisierungstest]
Web-API-Komponententest und Integrationstest mit SpringBoot + Junit5, 4 Muster
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
[Java] JUnit4-Testfallbeispiel
Erstellen Sie eine XML-RPC-API mit Wicket
JUnit 5 schlägt mit java.lang.NoSuchMethodError fehl: org.junit.platform.launcher.Launcher.execute
Verwenden Sie die Bulk-API mit RestHighLevelClient
Testen Sie Active Strage mit RSpec
Testen Sie private Methoden in JUnit
JUnit-Zusicherungen und Matcher-API
Testen Sie den GraphQL-Resolver mit rspec
Testen Sie private Methoden in JUnit
Ist die Web-API nicht zu bequem? ?? ??
REST-API-Test mit REST Assured
[JUnit] Testen Sie die ausgelöste Ausnahme
Mit Docker erstellte Webanwendung (1)
API mit Spring + Vue.js verknüpfen
Einfaches Web-Scraping mit Jsoup
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Erhalten Sie Flux-Ergebnisse von Spring Web Flux von JS mit der Fetch-API
Automatischer API-Test mit Selen + REST-Assured
Surfen im Internet mit ARKit + SceneKit + Metal
Ausgabe Testabdeckung mit Klee + Gradle
Test-API, die häufig in AssertJ verwendet wird
Mikro-Benchmark mit JFR-API
Erstellen Sie eine Webanwendung mit Javalin
JUnit-Testbericht in Maven ausgeben
Kopieren Sie den Test und fügen Sie ihn mit RSpec ein
Einschlussbeziehungen der Testliste zu AssertJ