studio para jbrain intellij instalar idea full configurar android intellij-idea

para - intellij vs android studio



¿Por qué el corrector de prueba de Android informa "Suite de prueba vacía"? (28)

Me estoy golpeando la cabeza contra la pared tratando de descubrir por qué IntelliJ / Android está informando sobre el "conjunto vacío de pruebas". Tengo un pequeño proyecto con dos módulos IntelliJ ("Proyectos" en Eclipse). El módulo de prueba de la unidad tiene su propio AndroidManifest.xml, que he pegado en la parte inferior. Estoy intentando ejecutar ActivityUnitTestCase , ya que las pruebas dependerán del objeto Context .

El nombre del paquete del módulo principal es nilzor.myapp . El nombre de pacakge del módulo de prueba es nilzor.myapp.tests

¿Por qué el corredor de prueba no detecta el testBlah() -method como una prueba?

<?xml version="1.0" encoding="utf-8"?> <!-- package name must be unique so suffix with "tests" so package loader doesn''t ignore us --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nilzor.myapp.tests" android:versionCode="1" android:versionName="1.0"> <!-- We add an application tag here just so that we can indicate that this package needs to link against the android.test library, which is needed when building test cases. --> <application> <uses-library android:name="android.test.runner"/> </application> <!-- This declares that this application uses the instrumentation test runner targeting the package of nilzor.myapp. To run the tests use the command: "adb shell am instrument -w nilzor.myapp.tests/android.test.InstrumentationTestRunner" --> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="nilzor.myapp" android:label="Tests for nilzor.myapp"/> </manifest>

Y aquí está mi clase de prueba :;

package nilzor.myapp.tests; public class NilzorSomeTest<T extends Activity> extends ActivityUnitTestCase<T>{ public NilzorSomeTest(Class<T> activityClass){ super(activityClass); } @SmallTest public void testBlah(){ assertEquals(1,1); } }

He leído los fundamentos de las pruebas , el documento de prueba de actividad , y he intentado seguir este blog de prueba de Hello World , aunque es para Eclipse. No puedo hacer que el corredor de pruebas encuentre y ejecute mi prueba. ¿Qué estoy haciendo mal?

Algunas de las preguntas de las que todavía no estoy seguro son:

  1. ¿Necesito una Anotación sobre el método de prueba de la Unidad?
  2. ¿Debo prefijar el método con "prueba" o solo para las pruebas JUnit?
  3. ¿Puedo hacer pruebas en nilzor.myapp.tests de nilzor.myapp.tests ?

Pero la pregunta principal de esta publicación es ¿por qué el corredor de prueba no detecta mi prueba ?


Acabo de renombrar el archivo y el problema solucionado.


Debe proporcionar el constructor predeterminado para su clase de prueba, por ejemplo:

package nilzor.myapp.tests; public class NilzorSomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{ public NilzorSomeTest(){ super(ActivityYouWantToTest.class); } @SmallTest public void testBlah(){ assertEquals(1,1); } }

sobre tus otras preguntas:

  1. No. Mis pruebas aún se ejecutan sin anotaciones, pero creo que es una buena práctica tenerlas. Le permite especificar el tamaño de las pruebas para ejecutar. Consulte ¿Cuál es el objetivo de las anotaciones @SmallTest, @MediumTest y @LargeTest en Android? para más detalles.

  2. Sí, necesitas el prefijo "prueba". InteliJ proporciona una advertencia de "método nunca utilizado" cuando no hay un prefijo de "prueba" y omite ese método durante la prueba.

  3. Sí. Tengo mis pruebas organizadas en subpaquetes y parece estar funcionando bien.


Después de enfrentar el problema hoy -no poder ejecutar las pruebas android instrumentadas con Empty suite error- encontré un problema de git sobre este problema y gracias a Stephan Linzner, pude ejecutar las pruebas.

tl; dr Tienes que hacer clic con el botón derecho en el paquete de prueba y no en la clase para poder ejecutar las pruebas.

Referencia: https://github.com/googlecodelabs/android-testing/issues/27#issuecomment-219074863


En el estudio de Android con spock framework, he cambiado la versión de mi gradle de 2.2.2 a 3.2.1 y todo va bien.


En mi caso, el proyecto en el que estaba trabajando tenía un par de módulos. Ninguna de las soluciones que encontré para este error me ayudó, y de alguna manera me di cuenta de que si añadía las dependencias de prueba en AMBOS archivos build.gradle, las pruebas mágicamente comenzaron a funcionar. No importa si sus pruebas viven en solo 1 de los módulos, ambos archivos de gradle deben incluir las dependencias y el valor de testInstrumentationRunner.

Entonces, si, como yo, ninguna de las otras respuestas te ha ayudado, intenta agregar estas líneas al archivo build.gradle de cada uno de tus módulos:

android { .... defaultConfig { ... testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } }

y luego también agregue:

dependencies { ... // Test androidTestCompile ''com.android.support:support-annotations:23.4.0'' androidTestCompile ''com.android.support.test:runner:0.5'' androidTestCompile ''com.android.support.test:rules:0.5'' }


En mi caso, ese problema fue causado por un error en mi código, en realidad eso estaba en la clase de la aplicación, por lo que la actividad del objetivo no se abrió y la salida de prueba imprime

Error de suite de prueba vacía

He intentado ejecutar pruebas directamente desde la terminal con adb shell am instrument -w -r -e package your.package -e debug false android.support.test.runner.AndroidJUnitRunner . Con esto imprime mucho más acerca de la excepción.


En mi caso, ninguna de las respuestas anteriores funcionó. La solución fue simplemente mover la clase de prueba a otro paquete .

Esto sucedió en androidTest/


En mi caso, tuve mis pruebas instrumentadas en androidTest/java/<package.name>/MyTestingClass , pero establecí mi variante de compilación actual en "preproducción". Y ahí está el punto! Como se especifica en la documentación de Android Studio :

Por defecto, todas las pruebas se ejecutan contra el tipo de compilación de depuración.

El mensaje Class not found. Empty test suite. Class not found. Empty test suite. siguió apareciendo hasta que hice esto:

  1. Agregue esta línea a mi build.gradle :

    android{ [...] testBuildType "preproduction" }

  2. Gradle sincronizado.
  3. Borre las configuraciones de prueba anteriores ya que no tienen en cuenta esta sincronización de Gradle.

¡Luego ejecuté las pruebas otra vez y esta vez funcionan perfectamente!


Estaba haciendo algunas inserciones en un db en el método @BeforeClass. Me di cuenta de que tenía un problema de mapeo de objetos / bases de datos. Este problema de mapeo de datos fue la causa de este problema para mí.


Este artículo me ayudó: Suite de prueba vacía

Básicamente tuve que crear un paquete - instrumentTest / java - en mi directorio src, y poner todas las pruebas allí. Entonces podría ejecutar estas pruebas individualmente.


Estos son mis pasos de depuración que paso cuando Android Studio, de repente, decide dejar de ejecutar / depurar pruebas (¡¡y a veces esto sucede embarazosamente !!):

  • Build: → Reconstruir proyecto
  • Reiniciar dispositivo: reinicia tu dispositivo / emulador y vuelve a intentarlo
  • Cambio de dispositivo: si tiene un teléfono regular y un emulador, desenchúfelo e intente ejecutarlo con solo uno de los dispositivos.
  • Android Studio: Archivo -> Invalidar cachés y reiniciar
  • Monitor de actividades / Administrador de tareas: clasifique los procesos por nombre, vea si hay un proceso sin nombre que está usando mucho RAM, este es un proceso "fantasma" del estudio de Android que debe ser asesinado
  • git revertir: intente esconder / revertir su último código. A veces, hay un error de compilación que Android Studio / gradle falla y que simplemente intentará ejecutar código no compilable.
  • Desinstalar y luego reinstalar Android Studio.

¡Añadiré más correcciones cuando me encuentre con ellas!


Experimenté el error "Suite de prueba vacía" al intentar ejecutar pruebas de unidades locales en mi proyecto de Android Studio 3.0.

Después de leer la documentation desarrollador de Android, rápidamente me di cuenta de que el problema se debía a mi configuración de gradle, que incluía las siguientes líneas.

testImplementation ''com.android.support.test:runner:0.5'' testImplementation ''com.android.support.test:rules:0.5''

La clase AndroidJUnitRunner es un corrector de prueba JUnit que le permite ejecutar clases de prueba JUnit 3- o JUnit 4 en dispositivos Android .

Como mis pruebas eran locales y, por lo tanto, no es necesario ejecutarlas en ningún dispositivo, la eliminación de las entradas anteriores de com.android.support.test ... me permitió ejecutar las pruebas unitarias.


La clase de prueba puede ser excluida de la compilación. Solucionarlo en setting-compiler-exclude.


La respuesta aceptada no resolvió mi problema. Así que decidí copiar ExampleInstrumentedTest que se crea de forma predeterminada en Android Studio y ejecutar sin ningún problema, renombrarlo durante el proceso de copia (sin Refactor-> Renombrar después de copiar!) Y pegar el contenido de mi prueba de unidad en él. Después de eso, el error desapareció.


Mi problema fue causado por una excepción lanzada en el método @BeforeClass de mi caso de prueba. De alguna manera no estaba causando que la prueba fallara, solo la encontré inspeccionando la salida de logcat.

¡Solucioné la excepción y de repente mis pruebas se estaban ejecutando!


Ninguna de las otras soluciones funcionó para mí, pero pude hacer que esto funcionara simplemente desinstalando la aplicación existente o el conjunto de pruebas, y luego ejecutando las pruebas.


Ninguno de los anteriores lo arregló para mí. Lo que ayudó fue seguir las instrucciones :

Crear una configuración de prueba

En Android Studio:

  • Abre el menú Ejecutar -> Editar Configuraciones
  • Agregar una nueva configuración de Android Tests
  • Elige un módulo
  • Agregue un corredor de instrumentación específico:

android.support.test.runner.AndroidJUnitRunner

Ejecute la configuración recién creada.


No hice nada y el problema desapareció después de medio día de dolor, abrí y cerré los proyectos muchas veces, realicé las pruebas de cada clase manualmente, tal vez eso solucionó mi problema.


No sé si ayuda para Android Studio, pero tuve algún tipo de conflicto Intellij-Gradle. Lo resolvió haciendo "clic derecho" en el archivo de prueba y presionando "compilar archivo ... Test.java". Después de eso, pude realizar pruebas únicas nuevamente.


Obviamente, necesita un dispositivo de destino para ejecutar sus pruebas, ya que son pruebas instrumentadas. Por alguna razón, el estudio de Android a veces no le pide que apunte a este dispositivo de destino y solo solicita el mensaje "Empty Test Suite". Hay diferentes maneras de arreglar esto, aquí hay algunas:

  • ejecuta tu aplicación principal y selecciona un dispositivo de destino o

  • vaya a la configuración Ejecutar (Ejecutar / Ejecutar ... / Editar Configuraciones) y modifique las Opciones de Destino de Implementación


Para Intellij 15, resolví este problema de la siguiente manera:

  1. Apertura de la configuración ''Estructura del proyecto''
  2. Al hacer clic en ''Módulos'' (a la izquierda)
  3. Pestaña ''Fuentes''
    a. Haga clic derecho en su directorio de origen (generalmente src), haga clic en ''Fuente''.
    segundo. Haga clic derecho en su directorio de prueba, haga clic en ''Test''
    do. Haga clic derecho en su directorio de salida, haga clic en ''Excluido''
  4. Ir a la pestaña ''Rutas''
    a. Haga clic en el botón de opción "Utilizar la ruta de salida de compilación del módulo"
    segundo. Seleccione su directorio de ruta de salida para ''Ruta de salida''
    do. Seleccione su directorio de ruta de prueba para ''Probar la ruta de salida''
  5. Haga clic en Aceptar

Si esto sucede "de repente" o "estuvo funcionando hace 5 minutos", mi solución fue ir a las configuraciones de Ejecutar / Depurar y eliminar cualquier configuración en "Pruebas de Android". A veces, estas configuraciones se corrompen si refactorizo ​​la clase bajo prueba (por ejemplo, moviéndome a un nuevo paquete).


Tenía pruebas que funcionaban bien hasta que gradle y Android Studio se actualizaron.

Además de agregar un constructor predeterminado a sus pruebas, es posible que necesite hacer algunas de estas cosas para que su suite de pruebas funcione

Debajo de src/ create androidTest/java/<your-package-name>/test . Tenga en cuenta el androidTest . Cualquier otra cosa, incluida instrumentTest , no funcionará.

Agregar esto a build.gradle

sourceSets { testLocal { java.srcDir file(''src/androidTest/java'') resources.srcDir file(''src/androidTest/resources'') } } android{ sourceSets { instrumentTest.setRoot(''src/androidTest/'') } } dependencies{ testLocalCompile ''junit:junit:4.11'' } task localTest(type: Test, dependsOn: assemble) { testClassesDir = sourceSets.testLocal.output.classesDir android.sourceSets.main.java.srcDirs.each { dir -> def buildDir = dir.getAbsolutePath().split(''/'') buildDir = (buildDir[0..(buildDir.length - 4)] + [''build'', ''classes'', ''debug'']).join(''/'') sourceSets.testLocal.compileClasspath += files(buildDir) sourceSets.testLocal.runtimeClasspath += files(buildDir) } classpath = sourceSets.testLocal.runtimeClasspath } check.dependsOn localTest

Agregue esto a AndroidManifest.xml

<instrumentation android:name="android.test.InstrumentationTestRunner" android:label="Tests for my packaged app" android:targetPackage="<my-package-name>.test" />


Tenía un proyecto Java en bruto donde esto estaba ocurriendo. Simplemente Java + JUnit4. Definitivamente reside en algo en sus archivos .idea / o .iml. Deseché el mío, volví a importar y, finalmente, las pruebas se volvieron a ejecutar.



Tuve el mismo problema, ¡y el motivo fue que mi clase de prueba no tenía Test al final del nombre de la clase!


Tuve este problema porque tenía esto en mi build.gradle:

testOptions { execution "ANDROID_TEST_ORCHESTRATOR" }

Aunque no estaba usando Android Test Orchestrator (debe haberse copiado de los tutoriales por error).

Comentando eso lo resolvió para mí.


Tuve un problema similar. No estoy seguro de por qué ocurre esto pero pude solucionarlo yendo a: "Archivo"> ​​"Invalidar caches / reiniciar" en Android Studio.