¿Por qué la herramienta de cobertura JaCoCo reporta un 100% de cobertura?
Añadí a mi proyecto JaCoCo editando el archivo build.gradle a nivel de aplicación:
plugins{
...
id 'jacoco'
}
jacoco {
toolVersion = "0.8.7"
}
buildTypes {
debug {
testCoverageEnabled = true
}
}
android {
//...
}
dependencies{
...
}
configurations.all{
resolutionStrategy {
eachDependency { details ->
if('org.jacoco' == details.requested.group) {
details.useVersion "0.8.7"
}
}
}
}
Realmente no tengo pruebas en mi proyecto, así que esperaba una cobertura muy baja.
Pero al ejecutar gradlew createDebugCoverageReport
, ¿se obtuvo una cobertura del 100%? Esperaba un 5% o menos, ya que no he escrito ninguna prueba. ¿Qué está mal ahí?
davy.ai
Como experto en IT especializado en Android, Gradle, JaCoCo y Android-JaCoCo, permíteme explicarte cuál podría ser la razón para obtener una cobertura del 100% incluso cuando no hay pruebas en el proyecto.
JaCoCo es una herramienta de cobertura de código que mide cuánto de tu código está cubierto por tus pruebas. Cuando habilitas
testCoverageEnabled
para un tipo de compilación, se instrumenta tu código y se generan datos de ejecución (archivos.exec
) durante la ejecución de las pruebas.Si ejecutas
gradlew createDebugCoverageReport
sin tener ninguna prueba, aún se generará un informe de cobertura basado en los archivos.exec
generados durante la compilación. Dado que no hubo pruebas, los archivos.exec
mostrarán que no se ejecutaron líneas de código, lo que resultará en una cobertura del 100%.Para obtener un informe preciso de cobertura, debes escribir pruebas y ejecutarlas utilizando
testCoverageEnabled
. Esto asegurará que JaCoCo capture los datos de cobertura de tu código de manera correcta.En resumen, ejecutar
gradlew createDebugCoverageReport
sin pruebas no te dará un informe preciso de cobertura. Necesitas escribir pruebas y ejecutarlas contestCoverageEnabled
para obtener un informe de cobertura significativo.