unitest unitarias test studio pruebas create android junit gradle android-studio

unitarias - El estudio de Android dice "Empty Test Suite" para AndroidTestCase



pruebas unitarias android studio (11)

Esta pregunta ya tiene una respuesta aquí:

Creé un caso de prueba de ejemplo que amplía AndroidTestCase. Cuando ejecuto el caso de prueba, se equivoca diciendo

Running tests Test running startedTest running failed: Instrumentation run failed due to ''java.lang.RuntimeException'' Empty test suite.

El caso de prueba

import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; import static org.junit.Assert.assertEquals; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.lang.Exception; import java.lang.Override; public class DateFormatTest extends AndroidTestCase{ @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public DateFormatTest(){ super(DateFormatTest.class); } @SmallTest public void testMultiply() { assertEquals("10 x 5 must be 50", 50, 10*5); } }


¿Has configurado tu testRunner en tu gradleConfig? Utilizamos diferentes TestRunners para diferentes pruebas (para acelerar las cosas. Mi configuración se ve así

android { // Some stuff defaultConfig { // Some other stuff //junit test testInstrumentationRunner "de.qabel.qabelbox.QblJUnitRunner" //ui tests testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } }

Si desactivo una de estas líneas, la prueba correspondiente también informará "Suite de prueba vacía".


Como nadie más lo menciona: los métodos en AndroidTestCase subclases de AndroidTestCase deben ser public y tener nombres que comiencen con "prueba".

El OP y las respuestas obtuvieron todo el derecho pero me lo perdí y obtuve el mismo error exacto.


Empecé a aprender sobre probar aplicaciones de Android y he estado luchando con el mismo problema. 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); } }


Entiendo que esta pregunta es antigua, y las herramientas de desarrollo han cambiado significativamente desde que se hizo esta pregunta.

Sin embargo, tuve un problema similar (en AndroidStudio 2.1.1) y resultó que solo el mensaje de error era bastante engañoso. Para mí, dijo:

Test running started Test running failed: Instrumentation run failed due to ''java.lang.IllegalStateException'' Empty test suite.

(Nota: la diferencia con la pregunta original es en IllegalStateException vs. RuntimeException)

Resultó que esta IllegalStateException realmente se lanzó en la inicialización del contexto de la aplicación como se puede ver al inspeccionar la salida de logcat. Como resultado, no se ejecutó ningún método de prueba, y Android Studio escribe este error "vacío de conjunto de pruebas".

Es decir, "Empty test suite" puede significar lo que realmente dice (no tiene ningún método de prueba declarado, por ejemplo, porque olvidó anotarlos con @Test ), pero también puede significar que algo (como una excepción de tiempo de ejecución arrojada en su código de inicialización de la aplicación) impide que el examinador llegue a cualquier método de prueba (que parece ser su caso).

Compruebe adb-logcat y busque RuntimeException s. Esto probablemente te encuentre la causa raíz de tu problema.


Esta guía podría ayudar - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

En el último gradle (0.9+), la prueba debe estar en androidTest dir

También en tu gradle.build:

dependencies { androidTestCompile ''junit:junit:4.+'' }

también agregue ésos bajo defaultConfig {

testPackageName "test.java.foo" testInstrumentationRunner "android.test.InstrumentationTestRunner"

}


Mi problema era que tenía el constructor predeterminado generado por Android Studio, se veía así

public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{ public SomeTest(Class<NewsActivity> activityClass) { super(activityClass); } }

y tuve que cambiarlo para eliminar el problema

public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{ public SomeTest() { super(ActivityYouWantToTest.class); } }


Obtuve este error al ejecutar pruebas desde Android Studio. Resultó que había colocado mis casos de prueba en la carpeta incorrecta. Al ejecutar Gradle / Android Studio, todas las pruebas de Android deben estar en la carpeta src/instrumentTest/java .

Editar: en el plugin de Gradle versión 0.9 o posterior, el nombre correcto de la carpeta es androidTest . ( http://tools.android.com/tech-docs/new-build-system/migrating_to_09 )


Obtuve este error porque uno de mis métodos de prueba no incluía "throws exception" después de la firma del método. podría ayudar a alguien


Tengo el mismo problema. Estaba haciendo testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" en mi defaultConfig {...} . Acabo de eliminar esa línea, y ahora está funcionando bien (el IDE está eligiendo la configuración correcta del corredor en el tiempo de compilación).

Espero que esto ayude a alguien.


Usamos la clase AndroidTestCase para definir que estamos probando componentes que son específicos de Android. El principal beneficio de AndroidTestCase es que nos da acceso a los recursos de la aplicación, como cadenas y diseños, etc.

AndroidTestCase no requiere que sobrescriba el constructor predeterminado ya que no proporciona una Activity particular como el Context , sino que le proporciona una general para que pueda llamar a getContext() .

En su ejemplo, no está utilizando ningún componente de Android, por lo que para usted, lo siguiente tendría sentido:

import android.test.suitebuilder.annotation.SmallTest; import junit.framework.TestCase; public class DateFormatTest2 extends TestCase { @SmallTest public void testMultiply() { assertEquals("10 x 5 must be 50", 50, 10 * 5); } }

Observe el uso de TestCase lugar de AndroidTestCase .

Para que AndroidTestCase sea ​​aplicable, se necesitaría una prueba que requiera recursos:

import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; public class DateFormatTest extends AndroidTestCase { @SmallTest public void testAppTitle() { assertEquals("MyApp", getContext().getResources().getString(R.string.app_name)); } }

Aquí usamos AndroidTestCase porque necesitamos acceder a los recursos de la aplicación.


Ya tengo un constructor predeterminado en mi caso de prueba, pero todavía me daba el error "Empty test suite" y me quedé atrapado en "Instanciando pruebas ...".

Intenté crear un nuevo espacio de trabajo, reiniciando Android Studio, pero eso no funcionó.

Finalmente, cierre Android SDK y emulador.

  1. Vaya a su android-sdks / plataforma-herramientas.

  2. Borre todos los archivos temporales de Android con estos comandos:

    a. rm -rf ~/Library/Application Support/AndroidStudio

    segundo. rm -rf ~/Library/Caches/AndroidStudio

    do. rm -rf ~/Library/Application Support/AndroidStudio

    re. rm -rf ~/Library/Preferences/AndroidStudio

  3. Correr:

    ./adb kill-server ./adb start-server

  4. Inicie Android y ejecute el caso de prueba.