# Pruebas unitarias en Quarkus generadas con Diffblue (Parte  II)

Si quieres ver la parte I puedes, ingresa al siguiente link ([AQUI](https://christianloza.dev/pruebas-unitarias-en-quarkus-generadas-con-diffblue-parte-i))

# Iniciando pruebas

Para realizar algunas pruebas se implementó unas simples clases de cálculo de distancias, y que posteriormente estas son expuestas por endpoints, se puede visualizar en un swagger para realizar pruebas.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693669572092/65be8d56-47a6-42b3-91d1-6d6a60521849.png align="center")

## Creación de pruebas con Diffblue

Actualmente al generar el .JAR no tiene ninguna prueba, se tiene incluido JaCoCo para realizar una cobertura correspondiente

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693670541598/88f03c08-c436-40cd-ac61-0051534c22d7.png align="center")

Si revisan en el IDE al seleccionar la clase verán un ícono de probeta, el cual indica que esta listo para generar pruebas con respecto a esa clase

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693670450823/05ba00f4-eca4-4020-b258-8990956916d8.png align="center")

Procedemos a generar las pruebas haciendo clic en la clase o método que queramos o directamente en el paquete con clic derecho sobre él y luego presionar la opción de `Write Test` .

Luego de un momento generará las pruebas correspondientes que puede visualizarse en un tab.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693670954947/3e72ff6d-4ab8-4f2a-9086-07a3e408a5f8.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693670962375/61b4586f-0a71-4283-a59c-c89bc3a75b21.png align="center")

Luego de generar las pruebas unitarias existen un bloque de ellas donde se desahabilitaron debido a un error (ver imagen), esto debido a que detecta las anotaciones JAX-RS como nulas, para ello es necesario agregar la inyección directamente

![Pruebas unitarias generadas](https://cdn.hashnode.com/res/hashnode/image/upload/v1693672197167/e7177c9a-89bf-4ccf-9fb8-5dabad468ad0.png align="center")

# Resultados

## Resultados en base a cobertura de código

Existe un problema con respecto a la implementación de excepciones, por ejemplo en las tres clases existen métodos los cuales llaman excepciones, y no fueron implementados correctamente.

Los resultado con JaCoCo demuestran que algunos puntos no fueron cubiertas con las pruebas generadas llegando a un 97%.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693676078599/95d9acd7-2409-460f-90e4-b8b25c92b1b3.png align="center")

Mientras que haciendo una prueba de cobertura muestra que tiene un 95% de cobertura de código.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693674117891/fdc134e1-6b55-4d8e-afcd-fe252d8b77be.png align="center")

Recordemos que en este caso se esta utilizando Quarkus y Diffblue tiene mayor decisión para generar pruebas con Mockito y que tiene una mayor generación si utilizamos Spring ([Aunque Quarkus puede utilizar sus anotaciones](https://es.quarkus.io/guides/spring-di)).

Una dependencia encontrada para generar las pruebas fue mockito como base principal para la generación de pruebas.

## Resultados en base a calidad de código

Se utilizó sonarCloud para verificar si tenemos algún Issue con respecto a las pruebas unitarias, pero no hubo mayor incidente debido a la complejidad de los métodos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1693675293137/3a9b289a-4a5a-4ded-9ab0-016511418b42.png align="center")

# Recursos utilizados

1. [https://github.com/ChristianLoza/quarkus-diffblue](https://github.com/ChristianLoza/quarkus-diffblue)
    
2. [https://sonarcloud.io/project/overview?id=ChristianLoza\_quarkus-diffblue](https://sonarcloud.io/project/overview?id=ChristianLoza_quarkus-diffblue) (Por configurar Rules y QualityGates)
    
3. [https://www.diffblue.com/](https://www.diffblue.com/)
    
4. [https://quarkus.io/](https://quarkus.io/)
    

# Conclusiones

1. Pierde un poco el enfoque si es que se busca un desarrollo dirigo en base a TDD
    
2. En caso de utilizar otro tipo de pruebas como (**REST-assured**) Diffblue no genera este tipo de pruebas
    
3. Reduce tiempo en cuanto a generación de pruebas, si bien en caso de utilizar otro framework requiere realizar algunas modificaciones.
    
4. Con respecto al uso de Quarkus es necesario siempre agregar la anotación `@QuarkusTest` en cada clase de prueba creada.
    
5. es 100% compatible con Spring Framework, Mockito y JUnit 4 o 5.
