Je suis nouveau dans les tests unitaires et je veux tester certains services de maillot dans un projet. Nous utilisons Junit. Veuillez me guider pour mieux écrire les cas de test.
CODE:
@GET
@Path("/getProducts/{companyID}/{companyName}/{date}")
@Produces(MediaType.APPLICATION_JSON)
public Object getProducts(@PathParam("companyID") final int companyID,
@PathParam("date") final String date, @PathParam("companyName") final String companyName)
throws IOException {
return productService.getProducts(companyID, companyName, date);
}
Le service mentionné ci-dessus fonctionne bien et je veux écrire un cas de test junit pour tester la méthode mentionnée ci-dessus. La méthode ci-dessus récupère la liste des produits (List<Product>
) au format JSON. Je voudrais écrire un cas de test pour vérifier l'état de la réponse et le format json.
REMARQUE: Nous utilisons la version Jersey 1.17.1.
De l'aide serait appréciée :)
Pour les tests de services Web Jersey, il existe plusieurs cadres de test, à savoir: Jersey Test Framework (déjà mentionné dans une autre réponse - voir ici la documentation de la version 1.17 ici: https://jersey.Java.net/documentation/1.17/test -framework.html ) et REST-Assured ( https://code.google.com/p/rest-assured ) - voir ici une comparaison/configuration des deux ( http://www.hascode.com/2011/09/rest-assured-vs-jersey-test-framework-testing-your-restful-web-services/ ).
Je trouve le REST-Assured plus intéressant et plus puissant, mais Jersey Test Framework est également très facile à utiliser. Dans REST-Assured pour écrire un scénario de test "pour vérifier l'état de la réponse et le format json", vous pouvez écrire le test suivant (tout comme vous le faites dans jUnit):
package com.example.rest;
import static com.jayway.restassured.RestAssured.expect;
import groovyx.net.http.ContentType;
import org.junit.Before;
import org.junit.Test;
import com.jayway.restassured.RestAssured;
public class Products{
@Before
public void setUp(){
RestAssured.basePath = "http://localhost:8080";
}
@Test
public void testGetProducts(){
expect().statusCode(200).contentType(ContentType.JSON).when()
.get("/getProducts/companyid/companyname/12345088723");
}
}
Cela devrait faire l'affaire pour vous ... vous pouvez également vérifier les éléments spécifiques JSON très facilement et de nombreux autres détails. Pour des instructions sur plus de fonctionnalités, vous pouvez consulter le très bon guide de REST-Assured ( https://code.google.com/p/rest-assured/wiki/Usage ). Un autre bon tutoriel est celui-ci http://www.hascode.com/2011/10/testing-restful-web-services-made-easy-using-the-rest-assured-framework/ .
HTH.
Ignorez simplement les annotations et écrivez un test unitaire normal qui passe les paramètres requis. Le retour que je pensais serait généralement de type "javax.ws.rs.core.Response" ... Il existe une méthode getEntity () qui peut être utilisée. L'utilisation d'un cadre d'objet Mock comme Mockito pourrait également être utile dans ce cas.
Connaissez-vous Chapitre 26. Framework de test Jersey ?
public class SimpleTest extends JerseyTest {
@Path("hello")
public static class HelloResource {
@GET
public String getHello() {
return "Hello World!";
}
}
@Override
protected Application configure() {
return new ResourceConfig(HelloResource.class);
}
@Test
public void test() {
final String hello = target("hello").request().get(String.class);
assertEquals("Hello World!", hello);
}
}