Test unitaire jersey Restful Services
Je suis nouveau dans les tests unitaires et je veux tester certains services jersey dans un projet. Nous utilisons Junit. Veuillez me guider pour écrire des cas de test de meilleure façon.
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érera 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 Maillot 1.17.1 version.
L'aide serait appréciée :)
3 réponses
Pour les tests Jersey web services, il existe plusieurs frameworks de test, à savoir: Jersey Test Framework (déjà mentionné dans une autre réponse - voir ici la documentation pour la version 1.17 ici: https://jersey.java.net/documentation/1.17/test-framework.html ) et rassurez-vous ( 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 repos assuré plus intéressant et puissant, mais Jersey Test Framework est très facile à utiliser aussi. Dans REST-Assured pour écrire un cas 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 obtenir 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 y a une méthode getentity() qui peut être utilisée. L'utilisation d'un framework D'objet fictif comme Mockito pourrait également être utile dans ce cas.
Connaissez-vous Le Chapitre 26. Cadre 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);
}
}