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.
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.testCoverageEnabled
agregué 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 connectedAndroidTest
por 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.