Estoy golpeando mi cabeza contra la pared aquí tratando de averiguar por qué IntelliJ / Android informa "Suite de prueba vacía". Tengo un pequeño proyecto con dos módulos IntelliJ ("Proyectos" en Eclipse). El módulo de prueba unitaria tiene su propio AndroidManifest.xml, que he pegado en la parte inferior. Estoy intentando ejecutar un ActivityUnitTestCase
, ya que las pruebas dependerán del Context
-objeto.
El nombre del paquete del módulo principal es nilzor.myapp
. El nombre del paquete del módulo de prueba esnilzor.myapp.tests
¿Por qué el corredor de pruebas no detecta el testBlah()
método -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 pruebas 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 busque y ejecute mi prueba. ¿Qué estoy haciendo mal?
Algunas de las preguntas de las que todavía me siento inseguro son:
- ¿Necesito una anotación sobre el método de prueba unitaria?
- ¿Necesito prefijar el método con "prueba", o es solo para las pruebas JUnit?
- ¿Puedo realizar pruebas en subpaquetes de
nilzor.myapp.tests
?
Pero la pregunta principal de esta publicación es ¿por qué el corredor de pruebas no detecta mi prueba ?
fuente
cmd+shift+t
acceso directo que creará una clase de prueba automáticamente en la ubicación correcta del paquete que coincida con la clase que está editando actualmente.@Test
marcador encima de la prueba.Respuestas:
Debe proporcionar un constructor predeterminado para su clase de prueba, por ejemplo:
sobre sus otras preguntas:
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 a ejecutar. Consulte ¿Cuál es el propósito de las anotaciones @SmallTest, @MediumTest y @LargeTest en Android? para más detalles.
Sí, necesita el prefijo "prueba". InteliJ da una advertencia de "método nunca usado" cuando no hay un prefijo de "prueba" y omite ese método durante la ejecución de la prueba.
Si. Tengo mis pruebas organizadas en subpaquetes y parece que funciona bien.
fuente
Si esto está sucediendo "de repente" o "estaba funcionando hace 5 minutos", mi solución fue ir a las configuraciones 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).
fuente
Create 'Tests in XXX...
, luego funcionó de nuevoNinguno de los anteriores me lo arregló. Lo que ayudó fue seguir las instrucciones :
fuente
Tuve un problema similar. No estoy seguro de por qué ocurre esto, pero pude solucionarlo yendo a: "Archivo"> "Invalidar cachés / reiniciar" en Android Studio.
fuente
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 volver a ejecutar pruebas individuales.
fuente
Tuve el mismo problema en Android Studio 2.3.1, resulta que fue solo un error con AS. Ejecutar la misma prueba en la versión 2.2.1 funciona bien.
Si solo está ejecutando Android Studio en el canal Cannary, le recomiendo que también instale una versión estable. http://tools.android.com/tips/using-multiple-android-studio-versions
fuente
Tenía pruebas que funcionaban bien hasta que
gradle
se actualizó el estudio de Android.Además de agregar un constructor predeterminado a sus pruebas, es posible que deba hacer algunas de estas cosas para que su conjunto de pruebas funcione
Bajo
src/
crearandroidTest/java/<your-package-name>/test
. Tenga en cuenta elandroidTest
. Cualquier otra cosa, inclusoinstrumentTest
no funcionará.Agregar esto a
build.gradle
Agregue esto al
AndroidManifest.xml
fuente
Para Intellij 15 resolví este problema de la siguiente manera:
a. Haga clic derecho en su directorio de origen (generalmente src) haga clic en 'Fuente'.
si. Haga clic derecho en su directorio de prueba, haga clic en 'Prueba'
c. Haga clic derecho en su directorio de salida, haga clic en 'Excluido'
a. Haga clic en el botón de
opción 'Usar ruta de salida de compilación del módulo' b. Seleccione su directorio de ruta de salida para 'Ruta de salida'
c. Seleccione su directorio de ruta de prueba para 'Ruta de salida de prueba'
fuente
Obviamente, necesita un dispositivo de destino para ejecutar sus pruebas, ya que son pruebas instrumentadas. Por algunas razones, Android Studio a veces no le pide que apunte a este dispositivo de destino y solo le muestre el mensaje "Empty Test Suite". Hay diferentes formas de solucionar este problema, aquí hay algunas:
ejecute su aplicación principal y seleccione un dispositivo de destino o
ir a la configuración Ejecutar (Ejecutar / Ejecutar ... / Editar configuraciones) y modificar las Opciones de destino de implementación
fuente
En mi caso, ninguna de las respuestas anteriores funcionó. La solución fue simplemente mover la clase de prueba a otro paquete .
Esto sucedió bajo
androidTest/
fuente
En mi caso, ese problema se debió a un error en mi código, en realidad eso estaba en la clase de aplicación, por lo que la actividad de destino no se abrió y las impresiones de salida de prueba
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 sobre la excepción.fuente
Tuve este problema porque tenía esto en mi build.gradle:
Aunque no estaba usando Android Test Orchestrator (debe haber copiado de los tutoriales por error).
Comentar eso lo resolvió para mí.
fuente
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.
fuente
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 luego de alguna manera me di cuenta de que si agregaba las dependencias de prueba en AMBOS archivos build.gradle, las pruebas comenzaron a funcionar mágicamente. No importa si sus pruebas se encuentran solo en 1 de los módulos, ambos archivos gradle deben incluir las dependencias y el valor 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:
y luego también agregue:
fuente
Acabo de cambiar el nombre del archivo y el problema se solucionó.
fuente
Tuve el mismo problema, ¡y la razón fue que mi clase de prueba no tenía Prueba al final del nombre de la clase!
fuente
Mi problema fue causado por una excepción lanzada en el
@BeforeClass
método de mi caso de prueba. De alguna manera no estaba causando que la prueba fallara, solo lo encontré inspeccionando la salida de logcat.¡Arreglé la excepción y de repente mis pruebas se estaban ejecutando!
fuente
Después de enfrentar el problema hoy, no poder ejecutar las pruebas de Android instrumentadas con el error de suite vacía, 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 que se ejecuten las pruebas.
Referencia: https://github.com/googlecodelabs/android-testing/issues/27#issuecomment-219074863
fuente
Este artículo me ayudó: suite de pruebas 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.
fuente
Tenía un proyecto de Java en bruto donde esto estaba ocurriendo. Simplemente Java + JUnit4. Definitivamente reside con algo en sus archivos .idea / o .iml. Deseché el mío, lo volví a importar y finalmente las pruebas se volvieron a ejecutar.
fuente
La clase de prueba puede excluirse de la compilación. Corríjalo en setting-compiler-exclude.
fuente
Estos son los pasos de depuración que sigo cuando Android Studio, de repente, decide dejar de ejecutar / depurar las pruebas (¡Y esto sucede vergonzosamente a menudo!):
¡Agregaré más correcciones a medida que las encuentre!
fuente
No hice nada y el problema desapareció después de medio día de dolor, abrí y cerré los proyectos muchas veces, ejecuté las pruebas de cada clase manualmente, tal vez eso lo solucionó.
fuente
En Android Studio con spock framework, cambié la versión de mi gradle de 2.2.2 a 3.2.1 y todo va bien.
fuente
La respuesta aceptada no resolvió mi problema. Así que decidí copiar lo
ExampleInstrumentedTest
que se crea por defecto en Android Studio y se ejecuta sin ningún problema, lo renombré durante el proceso de copia (¡no Refactor-> Renombrar después de copiar!) Y pegué el contenido de mi prueba unitaria en él. Después de eso, el error desapareció.fuente
Experimenté el error "Conjunto de pruebas vacío" al intentar ejecutar pruebas de unidades locales en mi proyecto de Android Studio 3.0.
Después de leer la documentación del desarrollador de Android , rápidamente me di cuenta de que el problema era causado por mi configuración de Gradle, que incluía las siguientes líneas.
La clase AndroidJUnitRunner es un corredor de prueba JUnit que le permite ejecutar clases de prueba de estilo JUnit 3- o JUnit 4 en dispositivos Android .
Dado que mis pruebas eran locales y, por lo tanto, no era necesario que se ejecutaran en ningún dispositivo, la eliminación de las entradas com.android.support.test ... anteriores me permitió ejecutar las pruebas unitarias.
fuente
Estaba haciendo algunas inserciones en una base de datos 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í.
fuente
En mi caso, tenía mis pruebas instrumentadas
androidTest/java/<package.name>/MyTestingClass
, pero había configurado mi variante de compilación actual en "preproducción". ¡Y ese es el punto! Como se especifica en la documentación de Android Studio :El mensaje
Class not found. Empty test suite.
siguió apareciendo hasta que hice esto:Agregue esta línea a mi build.gradle :
Luego ejecuté las pruebas de nuevo y esta vez se ejecutaron perfectamente !!!
fuente
Me pasó esto cuando marqué por error una variable de clase no simulada con la anotación
@Mock
Eliminé la anotación y las pruebas se ejecutaron correctamente. Esto sucedió con Junit 4.5 en Android Studiofuente
No es una solución, sino una solución alternativa que lo volverá a encaminar rápidamente:
En primer lugar, busque una prueba que funcione. Estaba escribiendo una nueva prueba en la que recibí el error de "suite de pruebas vacía". Hice otras pruebas y funcionaron como de costumbre.
Copie el archivo de prueba que sí funciona. Ejecútelo para asegurarse de que esta copia funcione como el original.
Retire el cuerpo y reemplácelo con su nuevo código de prueba.
La prueba debería funcionar ahora.
Pasamos unas dos horas tratando de encontrar la causa, pero fue en vano.
fuente