Android Gradle ejecuta pruebas en compilaciones no-depuración

Tengo un proyecto con tres tipos diferentes de construcción: depuración, beta y versión. Mi paquete de prueba siempre se crea para las compilaciones de depuración, pero QA utiliza la versión beta y queremos que QA ejecute estas pruebas en su amplia gama de dispositivos.

Estoy intentando crear un apk de prueba para QA que esté firmado por la misma clave que la versión beta. Mirando a través de la documentación de AndroidGradle, no veo nada que me diga que no puedo hacer esto, pero no veo de todos modos para configurar esto. ¿Hay de todos modos puedo configurar qué keystore se utiliza al ensamblar una prueba apk? ¿O hay una manera de crear una prueba sin firmar?

3 Solutions collect form web for “Android Gradle ejecuta pruebas en compilaciones no-depuración”

Esta es una respuesta incompleta a su pregunta en que documenta lo que no se puede hacer, pero la tarea connectedAndroidTest , que es lo que ejecuta las pruebas de androidTest en su proyecto, es hardcoded para ejecutar contra el tipo de compilación de debug , y no lo hago vea una manera de apuntarlo a un tipo de compilación diferente.

Tomando el consejo de ¿Hay una manera de enumerar dependencias de tareas en Gradle? y examinando el árbol de dependencia de la tarea, si ejecuta:

 ./gradlew tasks --all 

usted consigue esto en su salida:

 Verification tasks ------------------ app:check - Runs all checks. [app:lint] app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest] app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest] app:deviceCheck - Runs all device checks using Device Providers and Test Servers. 

La documentación de la tarea connectedAndroidTest afirma que ejecuta pruebas contra debug y las dependencias de tareas (que se ven con el indicador -all ) confirman que la tarea depende de assembleDebug .

La adición de tipos y sabores adicionales no parece afectar la dependencia del tipo de debug incorporado.

Es posible que con un Gradle-fu mayor que el mío, puedas volver a cablear las tareas para que las pruebas dependan de un tipo de compilación diferente, pero hacer esto es probable que sea frágil ya que está destinado a depender de cosas que no son compatibles. Complemento de Android Gradle.

Sin embargo, para responder a su pregunta de forma más directa, si lo que desea es ejecutar pruebas con una compilación con un certificado diferente, puede cambiar la configuración de firma en su compilación de debug para usar el certificado beta:

 android { signingConfigs { beta { keyAlias 'key' keyPassword 'password' storeFile file('/path/to/beta_keystore.jks') storePassword 'password' } } buildTypes { debug { signingConfig signingConfigs.beta } beta { signingConfig signingConfigs.beta } } } 

Lo probé y puedo ejecutar androidTest objetivos contra compilaciones de depuración que utilizan un almacén de claves personalizado de esta manera. Sin embargo, dudo que esto resuelva su problema, porque sospecho que desea ejecutar sus pruebas contra la versión beta, no una compilación de depuración con el certificado beta.

Ahora puede apuntar esto a un objetivo diferente, no sé cuándo sucedió esto, pero de los documentos:

Actualmente solo se prueba un tipo de compilación. De forma predeterminada, es el tipo de compilación de depuración, pero se puede reconfigurar con:

 android { ... testBuildType "staging" } 

Para agregar una fuente de prueba establecida para su variante de generación, siga estos pasos:

  • En la ventana Proyecto de la izquierda, haga clic en el menú desplegable y seleccione la vista Proyecto.
  • En la carpeta del módulo correspondiente, haga clic con el botón derecho en la carpeta src y haga clic en Nuevo> Directorio.
  • Para el nombre del directorio, escriba "androidTestVariantName". Por ejemplo, si usted tiene una variante de construcción llamada "MyFlavor", entonces el nombre del directorio shoulbe "androidTestMyFlavor". A continuación, haga clic en Aceptar.
  • Haga clic con el botón derecho en el nuevo directorio y haga clic en Nuevo> Directorio. Escriba "java" como nombre del directorio y, a continuación, haga clic en Aceptar.

Ahora puede agregar pruebas a este nuevo conjunto de fuentes siguiendo los pasos anteriores para agregar una nueva prueba. Cuando llegue al cuadro de diálogo Elegir directorio de destino, seleccione el nuevo conjunto de fuentes de prueba variante.

Las pruebas instrumentadas en src/androidTest/ source set son compartidas por todas las variantes de compilación. Al crear un APK de prueba para la variante "MyFlavor" de su aplicación, Gradle combina los conjuntos de fuentes src/androidTest/ y src/androidTestMyFlavor/ .

Otra forma es poner la línea siguiente en su configuración por defecto.

Actualmente solo se prueba un tipo de compilación. De forma predeterminada, es el tipo de compilación de depuración, pero se puede reconfigurar con:

 android { ... testBuildType "staging" } 
  • No hay recursos disponibles al ejecutar la prueba de unidad
  • Gradle: pros / contras añadiendo dependencias
  • Añadir dependencias a través de gradle a eclipse en el proyecto android
  • Dependencias de Gradle con Travis CI en proyecto Android
  • Gradle Android Plugin: Gancho en la tarea posterior a la compilación para todos los sabores del producto
  • Importar el proyecto de Android Studio de git en Android Studio (Gradle)
  • Adición de proyectos Android y Java externos a proyectos Android en Android Studio
  • Gradle versión 2.2 es necesario. La versión actual es 2.10
  • Cómo actualizar versiones de Apache HttpClient en Android
  • Creación de la aplicación de brecha telefónica para Android fallando
  • Gradle "manifiesto requiere un sustituto de posición" error, pero manifestPlaceholders suministra un valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.