Saltar al contenido

Cobertura de código Jacoco en Android Studio

El tutorial o código que hallarás en este post es la solución más eficiente y efectiva que encontramos a tus dudas o problema.

Solución:

Gradle ya tiene soporte incorporado para generar informes de cobertura de prueba y no necesitamos crear configuraciones adicionales ni agregar complementos para generar informes de cobertura de prueba. Básicamente, lo único que tenemos que hacer es establecer testCoverageEnabled parámetro a true en build.gradle archivo de la siguiente manera:

android 
   buildTypes 
      debug 
         testCoverageEnabled = true
      
   

A continuación, podemos ejecutar la siguiente tarea de Gradle desde CLI:

./gradlew createDebugCoverageReport

En Windows, podemos ejecutarlo así:

gradlew.bat createDebugCoverageReport

La tarea analizará el código de nuestro proyecto en /src/main/java/ directorio y pruebas unitarias colocadas en /src/androidTest/java/ directorio. Después de ejecutar esta tarea, podemos encontrar el informe de cobertura de prueba en el siguiente directorio del módulo:

/build/outputs/reports/coverage/debug/

cuando abrimos index.html archivo, podemos ver un informe visual de la cobertura de la prueba, que se puede ver en un navegador web.

Se ve como en la imagen de abajo.

ingrese la descripción de la imagen aquí

Escribí un artículo sobre el informe de cobertura de prueba en la aplicación de Android y lo publiqué en mi blog hace algún tiempo. Si te interesa ese tema, puedes leerlo en:

  • https://web.archive.org/web/20171210224809/http://blog.wittchen.biz.pl/test-coverage-report-for-android-application (Blog antiguo, con comentarios de usuarios)
  • http://wittchen.io/test-coverage-in-android-applications/ (Nuevo blog, sin comentarios de los usuarios)

Actualización (Cobertura de prueba unitaria para pruebas Robolectric)

Si desea crear un informe de cobertura de prueba a partir de pruebas unitarias escritas con roboelectrico y generar informe de cobertura de prueba con jacocó, Travis CI y Codecov.iopor favor echa un vistazo al nuevo artículo en mi blog:

  • https://web.archive.org/web/20171013015925/http://blog.wittchen.biz.pl/test-coverage-report-with-travis-ci-for-robolectric-tests-on-android/ (Antiguo Blog)
  • http://wittchen.io/unit-test-coverage-report-with-travis-ci-for-robolectric-on-android/ (Nuevo blog, sin comentarios de los usuarios)

Veo que ya lo hizo funcionar, sin embargo, hay un método más simple para obtener datos de ejecución de prueba unitaria. Recientemente también estuve investigando esto, de hecho, hice una redacción completa hoy.

En mi situación, no quería crear una tarea de Gradle adicional, ya que quería que el informe se generara como parte del flujo de trabajo existente. Tampoco quería agregar explícitamente el complemento Jacoco, ya que Google ya duplica las tareas de Jacoco Ant para los informes de cobertura de las pruebas de instrumentación.

Además de establecer las propiedades android.jacoco.version y buildTypes.debug.testCoverageEnabledagregué lo siguiente a la testDebug Argumentos de JVM para generar datos de ejecución:

project.afterEvaluate 
  def append = "append=true"
  def destFile = "destfile=$buildDir/outputs/code-coverage/connected/coverage.ec"
  testDebug.jvmArgs "-javaagent:$buildDir/intermediates/jacoco/jacocoagent.jar=$append,$destFile"

  createDebugCoverageReport.dependsOn testDebug

Esto agrega los datos de ejecución de la prueba unitaria al archivo de cobertura generado por connectedAndroidTestpor lo que su informe refleja tanto las Pruebas de instrumentación como las Pruebas unitarias, en lugar de cada variante individualmente.

Tenga en cuenta que connectedAndroidTest sobrescribe el archivo de cobertura, tenga esto en cuenta al crear su informe. si la tarea testDebug no tiene ningún cambio, y ejecutas createDebugCoverageReport, solo reflejará su cobertura de prueba de instrumentación. Por lo tanto, realice un cambio en sus pruebas unitarias. El comando Linux touch puede ser útil aquí, aunque aún no lo he intentado.

Eliminé por completo Android Studio, Android SDK, Gradle. Luego reinstala todo. Hoy eliminé por completo Android Studio, Android SDK, Gradle. Luego reinstala todo. Después de eso, acabo de agregar dentro de la aplicación build.gradle.

debug 
    testCoverageEnabled true

Luego ejecuto ./gradlew connectedChec. Todo está funcionando perfectamente. Jacoco, el estudio predeterminado de Android, funciona bien para mí. Creo que también es posible crear una tarea jacocoTestReport y luego crear una cobertura de código. No sé por qué Gradle y Android Studio no funcionaban anteriormente.

Sección de Reseñas y Valoraciones

Si para ti ha resultado útil nuestro post, te agradeceríamos que lo compartas con más programadores de esta forma nos ayudas a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *