[JAVA] Tester l'API Web avec junit

Testez l'API Web à l'aide de jUnit et soyez assuré

J'avais besoin de tester une API qui utilise le format JSON, je vais donc le résumer ci-dessous. Je le vérifie, donc je pense qu'il y a des erreurs.

Les choses nécessaires

Demander des paramètres

Rest-assuré convertira automatiquement la classe Object utilisée pour la requête en Json. Cette fois, j'utilise Jackson 2.

  1. Jackson2
  2. Jackson
  3. Gson

Comme ObjectMapper est utilisé, spécifiez ses paramètres et la destination de la connexion.

//nom d'hôte de destination de la connexion API
RestAssured.baseURI = "http://localhost"
//Paramètres d'ObjectMapper
RestAssured.config = RestAssuredConfig.config().objectMapperConfig(
        ObjectMapperConfig.objectMapperConfig().jackson2ObjectMapperFactory(new Jackson2ObjectMapperFactory() {
            @SuppressWarnings("rawtypes")
            @Override
            public ObjectMapper create(Class cls, String charset) {
                ObjectMapper objectMapper = new ObjectMapper();
                //Paramètres d'ObjectMapper ici

                return objectMapper;
            }
        })
);

Envoyer une demande

//importation statique
import static io.restassured.RestAssured.given;

ResponseClass response = given()
    .contentType(ContentType.JSON)  // content type
    .body(reqest)                   //demande
.when()
    .post("/api/hoge/1")                 //Spécifier le point de terminaison de l'API
.then()
    .statusCode(200)
    .extract().as(ResponseClass.class);   //Désérialiser à la classe spécifiée

Assertion de réponse

Utilisez junit assert pour voir si la valeur attendue est renvoyée.

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

Enregistrer la confirmation de correspondance à l'aide de DbUnit et Excel

Avec DbUnit, vous pouvez comparer l'enregistrement DB actuel avec les données écrites dans Excel comme valeur attendue. C'est également pratique car vous pouvez écrire des enregistrements DB dans un fichier Excel.

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

//Données après exécution
IDataSet dataSet = dbConn.createDataSet();

//Récupère l'enregistrement avec le nom de table spécifié
ITable data= dataSet.getTable("table");

//Définissez les colonnes que vous souhaitez exclure de l'assertion
data = DefaultColumnFilter.excludedColumnsTable(iTable, "created_at");

//Trier par colonne
data= new SortedTable(iTable, "hoge_name");


//Données de valeur attendue(Exceller)
Valeur attendue ITable= new XlsDataSet(new File("hoge/huga/Valeur attendue.xls"));
Valeur attendue= DefaultColumnFilter.excludedColumnsTable(iTable, "created_at");
Valeur attendue= new SortedTable(iTable, "hoge_name");

//Assertion DbUnit, pas affirmation Junit#Veillez à utiliser assertEquals
Assertion.assertEquals(Valeur attendue, data);

Je souhaite inclure des valeurs de différents types dans les paramètres de demande

//Convertir l'objet de requête en MAP
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>>(){});

//N'importe quelle clé:valeur de consigne
map.put("dinner", "Viande grillée")

//Convertir la carte en chaîne
String jsonString = objectMapper.writeValueAsString(map);

//Définir la chaîne de caractères json sur le corps et envoyer la demande
ResponseClass response  = given()
                .contentType(ContentType.JSON)
                .body(jsonString)
                .log().body()
            .when()
                .post(endpoint)
            .then()
                .log().body()
                .statusCode(200)
                .extract().as(responseClass);

Recommended Posts

Tester l'API Web avec junit
Faites un test unitaire avec Junit.
Test de l'API REST à l'aide de REST Assured Part 2
[Java] Tester des méthodes privées avec JUnit
Contrôleur de cadre de test Spring avec Junit
Contrôler l'ordre de test dans Junit4 avec un type d'énumération
Comment tester l'étendue privée avec JUnit
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Présentation du test Java automatisé avec JUnit 5 + Gradle
Présentation des tests Java automatisés avec JUnit 5 + Apache Maven
Comment tester les interruptions pendant Thread.sleep avec JUnit
Test JUnit facile de la version Elasticsearch 2018 avec Embedded-elasticsearch
Tester le code à l'aide d'une maquette avec JUnit (centre EasyMock)
Créer un serveur API Web avec Spring Boot
Mélanger les cas de test avec JUnit 5 et les méthodes par défaut
Compatible avec Android 10 (API 29)
Lancement du test JUnit essayez quelque chose
Test d'intégration avec Gradle
Automatisation des tests d'applications Web
[Rails] Test avec RSpec
Testez Nokogiri avec Rspec.
Tester automatiquement avec la jauge
Test de charge avec JMeter
Tester le contenu d'un fichier Excel avec JUnit
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
Test unitaire de l'API Web et test d'intégration avec SpringBoot + Junit5, 4 modèles
J'ai écrit un test avec Spring Boot + JUnit 5 maintenant
[Java] Exemple de cas de test JUnit 4
Créer une API XML-RPC avec Wicket
JUnit 5 échoue avec java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute
Utiliser l'API Bulk avec RestHighLevelClient
Tester Active Strage avec RSpec
Tester les méthodes privées dans JUnit
Assertions JUnit et API Matcher
Tester le résolveur GraphQL avec rspec
Tester les méthodes privées dans JUnit
L'API Web n'est-elle pas trop pratique? ?? ??
Test de l'API REST avec REST Assured
[JUnit] Tester l'exception levée
Application Web construite avec docker (1)
Lier l'API avec Spring + Vue.js
Scraping Web facile avec Jsoup
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
Obtenez les résultats Flux de Spring Web Flux de JS avec Fetch API
Test API automatique avec Selenium + REST-Assured
Navigation Web avec ARKit + SceneKit + Metal
Le test de paramétrage JUnit 5 est super pratique
Couverture de test de sortie avec Clover + Gradle
Test API souvent utilisé dans AssertJ
Micro benchmark réalisé avec l'API JFR
Créer une application Web avec Javalin
Sortie du rapport de test JUnit dans Maven
Copier et coller le test avec RSpec
Tester les relations d'inclusion de liste avec AssertJ