es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Condiciones de prueba y excepciones en pruebas de integración?

He escrito varias pruebas unitarias y ahora he cambiado a escribir pruebas de integración en nuestra aplicación Java (Spring Boot). Usamos las bibliotecas JUnit y Mockito para las pruebas.

Por lo que sé, las pruebas de integración comprueban todo el funcionamiento en lugar de una función en específico. Sin embargo, tengo dudas sobre si también debería comprobar las condiciones en los métodos mientras realizo pruebas de integración. Aquí hay un ejemplo de un método de servicio:

@Override
public CountryDTO create(CountryRequest request) {

if (countryRepository.existsByCodeIgnoreCase(countryCode)) {
    throw new EntityAlreadyExistsException();
}

final Country country = new Country();
country.setCode("UK");
country.setName("United Kingdom");

final Country created = countryRepository.save(country);
return new CountryDTO(created);
}

Mis preguntas son:
1. ¿Puedo escribir pruebas de integración para una clase de servicio o de repositorio?
2. Cuando pruebo el método “create” en mi servicio, creo los valores de solicitud adecuados (CountryRequest) en mi clase de prueba, luego los paso a este método “create” y luego compruebo el valor devuelto. ¿Es eso cierto? ¿O también necesito probar la condición en la cláusula if (countryRepository.existsByCodeIgnoreCase(countryCode))?
3. Cuando pruebo los métodos de búsqueda, creo primero un registro llamando al método “create” y el lugar apropiado para eso es el método @BeforeEach setup(). ¿Es eso cierto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en Tecnología de la Información especializado en Java, Spring Boot, pruebas, JUnit y pruebas de integración, respondería las preguntas de la siguiente manera:

    1. Sí, se pueden escribir pruebas de integración tanto para las clases de Servicio como para las de Repositorio. Las pruebas de integración ayudan a verificar la comunicación entre múltiples componentes de nuestra aplicación e identificar problemas que podrían surgir durante las interacciones. Estos problemas pueden no surgir en las pruebas unitarias, por lo que las pruebas de integración son importantes.

    2. Al probar el método create en la clase de servicio, es necesario verificar tanto los valores de entrada como los de salida, así como las condiciones en el bloque de código utilizando if. Los valores de entrada deben ser válidos e inválidos para comprobar que el método funciona bien en ambos casos. También se deben verificar los valores de salida para asegurarse de que coincidan con nuestras expectativas. Además, las condiciones especificadas en el bloque if deben ser probadas para confirmar que se lanzan las excepciones correctas si algunas condiciones no se cumplen.

    3. Las pruebas de los métodos find requieren que los datos estén disponibles en la base de datos, lo cual puede ser creado en el método de configuración de la clase de prueba utilizando la anotación @BeforeEach. El uso de datos de prueba creados a través de un método de configuración asegura que podamos mantener la misma configuración de datos inicial en cada ejecución de prueba, lo que garantiza la consistencia en los resultados de la prueba.

Comments are closed.