From 27284b4b0d707ce70c5db6e6ee442c490ca0ebda Mon Sep 17 00:00:00 2001 From: Yvan Peter <yvan.peter@univ-lille.fr> Date: Sun, 9 Feb 2020 17:35:48 +0100 Subject: [PATCH] ajout commentaires + readme --- README.md | 49 +++++++++++-------- .../iut/pizzaland/IngredientResourceTest.java | 22 +++++++++ 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 9abb362..6f5df6f 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ ingrédient. Elle porte des méthodes pour passer de cette représentation aux DTO. Cela permet de découpler l'implémentation de la ressource qui traite -les requêtes HTTP, de la donnée manipulée. +les requêtes HTTP et la donnée manipulée. Cette classe pourrait porter des comportements liés à cette donnée (par ex. calcul de TVA). @@ -188,8 +188,34 @@ d'un premier test. ingredients = response.readEntity(new GenericType<List<IngredientDto>>(){}); assertEquals(0, ingredients.size()); + } + +En héritant de JerseyTest, votre classe de test se comporte comme un +[`Client` +JAX-RS](https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Client.html). La +méthode `target()` notamment permet de préparer une requête sur une +URI particulière. + +Vous pouvez compiler votre code ainsi que les tests au moyen +des commandes `mvn compile` et `mvn test-compile`. La compilation du +code et des tests se fera automatiquement si nécessaire quand vous +faites un `mvn test`. + +Pour pouvoir compiler ce premier test, il faut au minimum fournir le +DTO `IngredientDto`. +Pour commencer, on se contentera de l'implémentation minimale +suivante : + + package fr.ulille.iut.pizzaland.dto; + + public class IngredientDto { + + public IngredientDto() { + } + } + A ce stade, vous pouvez lancer un premier test au moyen de la commande `mvn test`. Évidemment, ce test va échouer. @@ -201,15 +227,8 @@ A ce stade, vous pouvez lancer un premier test au moyen de la commande Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 -Vous pouvez compiler votre code ainsi que les tests au moyen -des commandes `mvn compile` et `mvn test-compile`. La compilation du -code et des tests se fera automatiquement si nécessaire quand vous -faites un `mvn test`. - Pour réussir, ce premier test, nous allons mettre en place la -ressource `IngredientResource` ainsi que -le DTO (Data Transfer Object) qui représentera les données -transportées dans les requêtes et réponses HTTP. +ressource `IngredientResource`. Une première implémentation de la ressource pourra avoir la forme suivante : @@ -229,18 +248,6 @@ suivante : return new ArrayList<IngredientDto>(); } } - -Pour réussir ce premier test, on se contentera de l'implémentation -suivante du DTO : - - package fr.ulille.iut.pizzaland.dto; - - public class IngredientDto { - - public IngredientDto() { - - } - } Avec cette première implémentation, on va pouvoir tester notre ressource : diff --git a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java index 87ca6e4..c6fb13e 100644 --- a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java +++ b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java @@ -18,6 +18,11 @@ import static org.junit.Assert.assertEquals; import java.util.List; import java.util.logging.Logger; +/* + * JerseyTest facilite l'écriture des tests en donnant accès aux + * méthodes de l'interface javax.ws.rs.client.Client. + * la méthode configure() permet de démarrer la ressource à tester + */ public class IngredientResourceTest extends JerseyTest { private static final Logger LOGGER = Logger.getLogger(IngredientResourceTest.class.getName()); @@ -26,6 +31,9 @@ public class IngredientResourceTest extends JerseyTest { return new ApiV1(); } + // Les méthodes setEnvUp() et tearEnvDown() serviront à terme à initialiser la base de données + // et les DAO + // https://stackoverflow.com/questions/25906976/jerseytest-and-junit-throws-nullpointerexception @Before public void setEnvUp() { @@ -39,8 +47,22 @@ public class IngredientResourceTest extends JerseyTest { @Test public void testGetEmptyList() { + // La méthode target() permet de préparer une requête sur une URI. + // La classe Response permet de traiter la réponse HTTP reçue. Response response = target("/ingredients").request().get(); + // On vérifie le code de la réponse (200 = OK) assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + + // On vérifie la valeur retournée (liste vide) + // L'entité (readEntity() correspond au corps de la réponse HTTP. + // La classe javax.ws.rs.core.GenericType<T> permet de définir le type + // de la réponse lue. + List<IngredientDto> ingredients; + ingredients = response.readEntity(new GenericType<List<IngredientDto>>(){}); + + assertEquals(0, ingredients.size()); + } } -- GitLab