with unit test example java json unit-testing rest junit

java - unit - spring boot test rest controller



Unidad de pruebas de jersey Servicios de descanso (3)

¿Está familiarizado con el Capítulo 26. Marco de prueba de 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); } }

Soy nuevo en las pruebas unitarias y quiero probar algunos servicios de jersey en un proyecto. Estamos utilizando Junit. Por favor guíame para escribir casos de prueba de mejor manera.

CÓDIGO:

@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); }

El servicio mencionado anteriormente funciona bien y quiero escribir el caso de prueba de Junit para probar el método mencionado anteriormente. El método anterior recuperará la lista de productos ( List<Product> ) en formato JSON. Me gustaría escribir un caso de prueba para verificar el estado de respuesta y el formato json.

NOTA: Estamos utilizando la versión Jersey 1.17.1.

La ayuda sería apreciada :)


Para las pruebas de servicios web de Jersey hay varios marcos de prueba, a saber: Marco de prueba de Jersey (ya mencionado en otra respuesta; consulte la documentación de la versión 1.17 aquí: https://jersey.java.net/documentation/1.17/test-framework.html ) y REST-Assured ( https://code.google.com/p/rest-assured ): vea aquí una comparación / configuración de ambos ( http://www.hascode.com/2011/09/rest-assured-vs-jersey-test-framework-testing-your-restful-web-services/ ).

El REST-Assured me parece más interesante y poderoso, pero el marco de prueba de Jersey también es muy fácil de usar. En REST-Assured para escribir un caso de prueba "para verificar el estado de la respuesta y el formato json", puede escribir la siguiente prueba (como lo hace en 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"); } }

Esto debería hacer el truco por usted ... puede verificar elementos específicos de JSON también muy fácilmente y muchos otros detalles. Para obtener instrucciones sobre más funciones, puede consultar la excelente guía de REST-Assured ( https://code.google.com/p/rest-assured/wiki/Usage ). Otro buen tutorial es este http://www.hascode.com/2011/10/testing-restful-web-services-made-easy-using-the-rest-assured-framework/ .

HTH.


Simplemente ignore las anotaciones y escriba una prueba de unidad normal que pase los parámetros requeridos. El retorno que pensé usualmente sería del tipo "javax.ws.rs.core.Response" ... Hay un método getEntity () que se puede usar. Usar un marco de objeto simulado como Mockito también podría ser útil en este caso.