unitarios unitario unitarias test pruebas ejemplo atdd unit-testing scala continuous-integration hudson code-coverage

unit-testing - unitarias - test unitario ejemplo



Herramientas de cobertura de código para Scala (6)

¿Cuáles son las herramientas de cobertura de código disponibles para Scala?

Tengo pruebas de especificación de Scala y una configuración de integración continua de Hudson. ¿Hay algo que pueda enganchar a esta configuración para medir y rastrear la cobertura del código?


He creado un plugin de SBT llamado xsbt-coveralls-plugin que usa scct bajo el capó, pero publica los resultados en http://coveralls.io .

Descargo de responsabilidad: Acabo de crear este complemento ayer (10 de marzo de 2013), así que no esperes que sea perfecto todavía, pero envía errores y solicitudes de funciones a la página de github.

Aún así, es bueno si desea codificar los informes de cobertura para que sean visibles públicamente. Vea un ejemplo de los resultados here



Un problema con los lenguajes no convencionales (como Scala) es que las herramientas son difíciles de encontrar, porque son difíciles de construir.

Este artículo técnico Cobertura de la sucursal de Arbitrary Languages ​​Made Easy (Yo soy el autor) describe cómo crear herramientas de cobertura de prueba para idiomas de manera sistemática para ayudar a solucionar este problema, utilizando una infraestructura genérica de creación de herramientas.

Hemos implementado herramientas de cobertura de prueba para Java, C #, COBOL, C, C ++, PL / SQL, ... de esta manera, incluidos los instrumentos, la recopilación de datos y la visualización e informe de la cobertura de prueba. Sería sencillo implementar Scala de esta manera.

Las soluciones planteadas por otras respuestas producen información confusa de la implementación de Scala ("clases genreadas automáticamente"). Lo que los desarrolladores quieren ver son datos de cobertura en términos de su código. El enfoque en el que usamos los instrumentos es el código fuente, por lo que los resultados se expresan por completo y solo en términos del código fuente; incluso el visor de cobertura de prueba muestra el código fuente cubierto con información de cobertura.


Yo uso Cobertura . Sin embargo, cualquier herramienta de cobertura Java debería funcionar bien. El único inconveniente es que terminará con una gran cantidad de clases generadas automáticamente en su lista de cobertura. Esto se debe a que, mientras Scala se compila en un bytecode de JVM muy natural, se ve forzado a producir una cantidad anormalmente grande de clases para acomodar funciones funcionales comunes como la evaluación perezosa.


Yo uso jacoco No requiere dependencias de compilación o tiempo de ejecución, clases de instrumentos sobre la marcha sin fase de instrumentación especial.

También se integró con Sonar y se publicó en Maven Central.

Aquí hay un ejemplo: https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

Me gustaría agregar mejores informes: makrup de cobertura de ramas más detallado, excluyendo las clases / métodos generados, y ser útil como ScalaDoc (ver informes de SCCT, por ejemplo)