Cómo excluir las clases Dagger2 de la cobertura de la prueba

¿Existe alguna opción para excluir clases Dagger2 del informe de cobertura de prueba en Android Studio

JaCoCo excluye

Si está utilizando JaCoCo, por ejemplo, utilizando las pruebas de instrumentación de Android conectado , debe configurar las exclusiones (o incluye), que, de acuerdo con la documentación es …

Una lista de archivos de clase a excluir del informe. Puede utilizar caracteres comodín (* y?). Cuando no se especifica nada se excluirá.

Lo que significa que debe coincidir con los nombres generados clase daga. Las siguientes reglas cubren prácticamente cualquier clase generada por dagger-compiler , sin coincidir con ninguna de las clases no generadas (a menos que nombre su clase lo mismo que dagger hace …):

 excludes = [ '**/*_MembersInjector.class', '**/Dagger*Component.class', // covers component implementations '**/Dagger*Component$Builder.class', // covers component builders '**/*Module_*Factory.class' ] 

Puede comprobar las clases de daga generadas en el directorio app/build/generated/source/apt después de ejecutar una compilación, para ver si hay alguna clase generada adicional que quiera igualar con exclue.

Esto excluye array es una propiedad de configuración del complemento jacoco. Ahora, donde poner esto excludes matriz depende de si usted define sus propias tareas basadas en el plugin de jacoco, o utilice un "plugin de nivel superior" que hace esto para usted. Por ejemplo, utilizando este complemento (puede ver la fuente del complemento para ver dónde se aplican realmente las exclusiones):

 jacocoAndroidUnitTestReport { excludes += [ '**/*_MembersInjector.class', '**/Dagger*Component.class', '**/Dagger*Component$Builder.class', '**/*Module_*Factory.class' ] } 

Pruebas conectadas

Si está ejecutando la cobertura de prueba conectada con android estableciendo testCoverageEnabled true en su buildType , desafortunadamente no hay manera idiomática de declarar excluye , ya que el complemento androide gradle no proporciona tales opciones, y la tarea de informe predefinida jacoco tiene excluye hardcoded. En este caso, tiene que script su propia tarea con excluye .


Corredor de pruebas IntelliJ

Si está utilizando el controlador de prueba IntelliJ, ya sea que la cobertura sea realizada por IntelliJ o JaCoCo, debe poner los incluidos para una configuración de prueba.

  1. Abra la ventana Editar configuraciones :

Editar configuraciones

  1. Elija su configuración de prueba y definir incluye (clases o paquetes completos). En este caso com.google.android.gms todo el paquete com.google.android.gms , como ejemplo:

La cobertura de la prueba incluye

Para excluir los archivos generados por dagas, la forma más rápida es poner todas las dependencias de dagas en un paquete raíz e incluir todos los demás paquetes en la configuración de prueba.

  • Jacoco Android createDebugCoverageReport no encontrado
  • Cómo generar el archivo jacoco.exec con Gradle Plugin en Android Studio?
  • AndroidStudio: Informe de cobertura de código JaCoCo 0% para cobertura
  • Ejecutar una sola prueba para comprobar la cobertura de código Jacoco Android
  • Jacoco cobertura de código en proyecto con múltiples sabores y módulos
  • Informe vacío de Jacoco para Android Espresso
  • ¿Cómo obtener el informe de cobertura de código para android test apk using jacoco?
  • Archivo Cobertura de cobertura.ec al informe de Jacoco
  • Transformación de Dalvik usando código de invocación incorrecto
  • Java.lang.NoClassDefFoundError: Resolución fallida de: Lorg / jacoco / agent / rt / internal_773e439 / Offline;
  • JaCoCo devuelve 0% de cobertura con Kotlin y Android 3.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.