Tutorial Spring REST 7/9 – Testing en Servicios REST con JUnit

1458

En este artículo, revisamos cómo realizar testing con JUnit en un servicio REST de Spring 4 asegurado con OAUTH2 y Spring Security. Para realizar pruebas de integración, usaremos JUnit, framework que nos da la flexibilidad y facilidad para ejecutar test a nuestros servicios y asegurar la calidad de los mismos, validando las respuestas esperadas.

Dependencias de Maven

Primeramente, agregamos las dependencias necesarias a nuestro proyecto para realizar pruebas con JUnit hacia URIs de un servicio REST de Spring (nota que solo hemos incluido las dependencias necesarias para este tema, puedes consultar el POM completo en el repositorio del proyecto).

	<!-- Testing -->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <scope>test</scope>
	    <exclusions>
	        <exclusion>
	            <artifactId>hamcrest-core</artifactId>
	            <groupId>org.hamcrest</groupId>
	        </exclusion>
	    </exclusions>
	</dependency> 
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-test</artifactId>
	    <scope>test</scope>
	</dependency>

Configuración para pruebas

Para cargar el contexto de Spring dentro de las pruebas es necesario configurar la clase en donde se inyecten los servicios, componentes o repositorios con las siguiente anotación de Spring Test.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { RestConfiguration.class })
@WebAppConfiguration
public class TestReposiory { ... }

Testing de repositorios

Para hacer tests de los servicios que contienen nuestra lógica de negocio, inyectaremos el repositorio de JPA a nuestra clase de prueba, crearemos métodos de prueba y aseguraremos el comportamiento esperado con los métodos de JUnit.

	@Autowired
	private UserRepository userRepo;
	
	@Test
	public void ensureGetIdByUsername() {
		Integer id = userRepo.findIdByUserName("user3");
		assertNotNull(id);
		assertTrue(id > 0);
	}

Nota que se hace uso de valores dummy para las pruebas y que el aseguramiento del comportamiento de los métodos bajo pruebas, debe hacer sentido con la lógica definda en tu proyecto. También es muy importante apuntar a un ambiente de pruebas o desarrollo en cuanto a tu base de datos, servicios web o sistema de archivos cuando se realizan estas pruebas.

Ejecutando las pruebas desde maven

Las pruebas con JUnit en tu proyecto se ejecutaran cada vez que se compile tu proyecto con el comando:

mvn clean install

O bien, puedes correr cada una de tus pruebas desde tu IDE, para revisar especificamente la prueba de un modulo en particular.

Continua con el tutorial

Recuerda que esta serie cuenta con 9 tutoriales, puedes consultar el siguiente sobre la configuración de Tomcat embebido, a continuación:

Tutorial Spring REST 8/9 – Tomcat embebido en Maven

Repositorio en Github

Nota que no todo el código del proyecto fue incluido en este artículo, puedes encontrar el código completo en nuestro repositorio de Github:

https://github.com/chuucks/SPRING-REST-API/

Recuerda darnos una estrellita 😉


La configuración de Spring MVC y JUnit mostrada en este artículo para un servicio REST, es solo una forma propuesta de hacerlo y tienen fines únicamente ilustrativos para nuestra la comunidad de Codesolt.

Comments

comments