Ejecute una sola prueba de Android (unidad) desde gradle sin cargar otras dependencias de proyecto
Estoy usando el impresionante plugin de Jake Wharton para pruebas de unidad Android. Mi objetivo de tomar la molestia de obtener estas pruebas de unidad de ejecución, es para la velocidad (TDD rápida retroalimentación y todos).
He logrado configurarlo correctamente y hacer que algunas pruebas de ejemplo se ejecuten de la siguiente manera:
- ¿Cómo ejecutar pruebas de unidad para Android no está en el dispositivo o emulador?
- Instrumentation.ActivityMonitor no monitoreando Intent.ACTION_CALL
- JUnit en android
- Android JUnit4 Pruebas - ¿Dónde obtener el contexto de?
- Prueba de DialogFragments con Robolectric
./gradlew test
Cada vez que ejecuto las pruebas aunque me doy cuenta de la siguiente salida:
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0 The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead. The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead. :mySampleApp:preBuild UP-TO-DATE :mySampleApp:preDebugBuild UP-TO-DATE :mySampleApp:preReleaseBuild UP-TO-DATE :libraries:facebook:compileLint :libraries:facebook:copyReleaseLint UP-TO-DATE :libraries:facebook:mergeReleaseProguardFiles UP-TO-DATE :libraries:facebook:packageReleaseAidl UP-TO-DATE :libraries:facebook:preBuild UP-TO-DATE :libraries:facebook:preReleaseBuild UP-TO-DATE :libraries:facebook:prepareReleaseDependencies :libraries:facebook:compileReleaseAidl UP-TO-DATE :libraries:facebook:compileReleaseRenderscript UP-TO-DATE :libraries:facebook:generateReleaseBuildConfig UP-TO-DATE :libraries:facebook:mergeReleaseAssets UP-TO-DATE :libraries:facebook:mergeReleaseResources UP-TO-DATE :libraries:facebook:processReleaseManifest UP-TO-DATE :libraries:facebook:processReleaseResources UP-TO-DATE :libraries:facebook:generateReleaseSources UP-TO-DATE :libraries:facebook:compileRelease UP-TO-DATE :libraries:facebook:processReleaseJavaRes UP-TO-DATE :libraries:facebook:packageReleaseJar UP-TO-DATE :libraries:facebook:packageReleaseLocalJar UP-TO-DATE :libraries:facebook:packageReleaseRenderscript UP-TO-DATE :libraries:facebook:packageReleaseResources UP-TO-DATE :libraries:facebook:bundleRelease UP-TO-DATE :mySampleApp:prepareComAndroidSupportAppcompatV71800Library UP-TO-DATE :mySampleApp:preparemySampleAppandroidLibrariesFacebookUnspecifiedLibrary UP-TO-DATE :mySampleApp:prepareDebugDependencies :mySampleApp:compileDebugAidl UP-TO-DATE :mySampleApp:compileDebugRenderscript UP-TO-DATE :mySampleApp:generateDebugBuildConfig UP-TO-DATE :mySampleApp:mergeDebugAssets UP-TO-DATE :mySampleApp:mergeDebugResources UP-TO-DATE :mySampleApp:processDebugManifest UP-TO-DATE :mySampleApp:processDebugResources UP-TO-DATE :mySampleApp:generateDebugSources UP-TO-DATE
Gradle parece estar cargando TODAS las dependencias de mi proyecto.
Mi prueba de muestra es la siguiente:
package com.mycompany.mysampleapp; import org.junit.Test; import static org.fest.assertions.api.Assertions.assertThat; public class AdditionOperationsTest { @Test public void testModulus() { assertThat(1).isEqualTo(1); } }
Esta prueba debería tomar una fracción de segundo para ejecutarse. Mi comprensión es que todo lo que pre-carga de las dependencias del proyecto está atascándola hacia abajo.
En los buenos días, me aseguraría de tener lo que necesito en el CLASSPATH y ejecutar algo como:
javac src/test/java/main/java/com/micromobs/pkk/AdditionOperationsTest.java java org.junit.runner.JUnitCore com.micromobs.pkk.AdditionOperationsTest
Teniendo en cuenta que este es un proyecto de Android con gradle, estoy asumiendo que tendría que hacer algo un poco diferente como crear tareas específicas en el archivo de compilación gradle, que incluyen sólo mis archivos de prueba para mi proyecto de ejemplo y, a continuación, ejecutar un comando gradle. / Gradlew taskName?
Pregunta: ¿Es posible ejecutar la prueba única "AdditionOperationsTest" dentro del contexto de mi proyecto (com.mycompany.mysampleapp) solo para que no cargue las dependencias externas del proyecto
Así es como se ven mis archivos de configuración:
# settings.gradle include ':libraries:gradle-android-test-plugin' include ':libraries:facebook', ':mysampleapp' # build.gradle ... apply plugin: 'android-test' dependencies { testCompile 'junit:junit:4.10' testCompile 'org.robolectric:robolectric:2.1.+' testCompile 'com.squareup:fest-android:1.0.+' } # location of my test files: androidproj/mysampleapp/src/test/java/main/com/mycompany/mysampleapp/AdditionOperationsTest.java
- Android instrumentación prueba java.lang.UnsatisfiedLinkError en el uso de AndroidJunitRunner y AndroidJUnit4
- Obteniendo junit.framework.AssertionFailedError: No se encontraron pruebas en cuando se usa Unit y Mockito
- VerifyError con PowerMock en Android
- No se pudieron determinar las dependencias para todas las tareas con robolectric gradle plugin
- Prueba de Android Realm con RxJava - "abierto desde un hilo sin un Looper" Excepción
- Actualizar Robolectric 2.4: Obtener error de etiqueta de aplicación para proyectos de biblioteca en eclipse
- Prueba de unidad Android: ¿Cómo hacer que una clase sea más comprobable?
- Prueba de la unidad de Android que no informa Fallando con error ()
Debe ser capaz de hacerlo utilizando la opción de línea de comandos -a
(sin reconstrucción de las dependencias del proyecto). La ejecución de gradle -a test
debería dar lugar a que las libraries:facebook
y mysampleapp
no se reconstruyan.
EDIT: Como se indica a continuación, puede mejorar significativamente el rendimiento de su generación de Gradle mediante el daemon Gradle .