jueves, 10 de septiembre de 2015

Propuesta de tecnologías de tests para integración continua

Para conseguir que en sonar aparezcan diferenciadas las coberturas de tests unitarios y tests de integración hemos llegado a lo siguiente.
A nivel de maven usamos los plugins:
  • Para configurar la ejecución de tests unitarios (UT):
          org.apache.maven.plugins
          maven-surefire-plugin
  • Para configurar la ejecución de tests de integración (IT):
          org.apache.maven.plugins
          maven-failsafe-plugin
  • Para publicar informes de cobertura en Sonar:
          org.jacoco
          jacoco-maven-plugin

Se optó por Jacoco para los informes de cobertura en Sonar debido a que nos permitía realizar una diferenciación entre la cobertura de tests unitarios y tests de integración. Descartamos el plugin Cobertura que no nos permitía realizar este paso
A nivel de tests usamos:
  • Junit+Jmockit+Podam para tests unitarios.Para los tests unitarios hemos probado varias librerías para mockear objetos y clases y finalmente nos hemos decantado por Jmockit http://jmockit.org/ . Esta librería es la que más encaja con surefire,failsafe,jacoco y sonar, además de momento es menos engorrosa. Descartamos Mockito y Powermockito debido a problemas con clases estáticas, aunque los tests funcionaban Jacoco no era capaz de generar informes de cobertura de ellas, esto era un bug conocido. Actualmente hay otro bug en Jacoco que no permite contar la cobertura de las lineas dentro de los "catch". Utilizamos Podam para generar clases con contenido dummy de forma rápida.
  • Junit+Spring para tests de integración. Utilizamos SpringBoot para arrancar un servidor embebido con la aplicación y RestTemplate para lanzar las llamadas a nuestros endpoints.

No hay comentarios: