¿Cómo apuntamos androidTest a un Peer Eclipse-Style Project?

Estoy ayudando al Proyecto Guardian en NetCipher . Por motivos legados, quieren mantener su estructura de proyecto existente, basada en Eclipse. Sin embargo, en lugar de tener las pruebas en una tests/ subdirectorio de la biblioteca, fueron con un modelo de proyecto de iguales. Así, fuera de la raíz de repo, libnetcipher/ es la biblioteca y netciphertest/ son las pruebas de instrumentación.

Las pruebas de instrumentación nunca fueron configuradas para las compilaciones de Gradle, a diferencia de libnetcipher/ sí mismo. Por lo tanto, estoy añadiendo cosas al archivo libnetcipher/build.gradle para que apunte su androidTest sourceset al directorio netciphertest/ , en lugar de su ubicación normal.

Esto funciona:

  androidTest { manifest.srcFile '../netciphertest/AndroidManifest.xml' java.srcDirs = ['../netciphertest/src'] resources.srcDirs = ['../netciphertest/src'] aidl.srcDirs = ['../netciphertest/src'] renderscript.srcDirs = ['../netciphertest/src'] res.srcDirs = ['../netciphertest/res'] assets.srcDirs = ['../netciphertest/assets'] } 

Sin embargo, los bits duplicados ../netciphertest son icky. Podría definir eso como una constante para minimizar la duplicación, por supuesto. Estoy tratando de averiguar si hay un enfoque mejor a todo el problema.

Por ejemplo, esto no funciona:

  androidTest.setRoot('../netciphertest') androidTest { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } 

Pensé que quizás el srcDirs y el srcFile podrían ser interpretados relativo al valor setRoot() , pero parecen ser interpretados relativo a la raíz del proyecto.

¿Hay una solución más elegante que lo que tengo trabajando?

Leyendo sobre la documentación de Gradle, no pude encontrar nada acerca de las vías absolutas relativas para los srcDirs , pero parece que si acaba de dar src que asumirá ./src independientemente de la raíz que se estableció. Tal vez esto podría ser una solicitud de característica Gradle o podría funcionar como se esperaba en las versiones posteriores de Gradle? No estoy seguro, no mirar en él.

Dicho esto, asumiendo que usted no necesita aidl , renderscripts , o resources (ya que no aparecen utilizados en el proyecto), entonces esto es menos "icky"?

 androidTest { setRoot '../netciphertest' java.srcDirs = ['../netciphertest/src'] } 

Todos los demás se configurará automáticamente de esta manera si no los anula y simplemente establece la raíz.

 androidTest.manifest.srcFile = /NetCipher/netciphertest/AndroidManifest.xml androidTest.res.srcDirs = [/NetCipher/netciphertest/res] androidTest.assets.srcDirs = [/NetCipher/netciphertest/assets] // Override these, if you wish androidTest.resources.srcDirs = [/NetCipher/netciphertest/resources] androidTest.aidl.srcDirs = [/NetCipher/netciphertest/aidl] androidTest.renderscript.srcDirs = [/NetCipher/netciphertest/rs] 

Puede imprimir las rutas dentro de Gradle y jugar con ella más si lo desea, incluyendo esta sección dentro del bloque sourceSets .

 println "androidTest.manifest.srcFile = ${androidTest.manifest.srcFile}" println "androidTest.java.srcDirs = ${androidTest.java.srcDirs}" println "androidTest.resources.srcDirs = ${androidTest.resources.srcDirs}" println "androidTest.aidl.srcDirs = ${androidTest.aidl.srcDirs}" println "androidTest.renderscript.srcDirs = ${androidTest.renderscript.srcDirs}" println "androidTest.res.srcDirs = ${androidTest.res.srcDirs}" println "androidTest.assets.srcDirs = ${androidTest.assets.srcDirs}" 
  • Tarea con el nombre 'testDebug' no se encuentra en el proyecto ': module'
  • Cómo resolver java.util.zip.ZipException?
  • La actualización de Google Play Services de 8.4.0 a 9.2.1 provoca un error de sincronización de Gradle
  • Cómo configurar las pruebas de unidad para Android / Gradle
  • Android gradle prueba sólo un sabor
  • Error de Gradle: no se pudo ejecutar la compilación usando la distribución gradle
  • Pruebas de Android con Gradle: Cambie el nombre de archivo de salida de prueba de JUnit
  • ¿Cómo suprimir la advertencia de Gradle en Android Studio?
  • Android studio - La aplicación con proyecto de biblioteca falla al generar
  • Ejecutar pruebas de JUnit en la aplicación de Gradle para Android
  • Adición de dependencias de Maven a Gradle en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.