Android studio dice "Empty Test Suite" para AndroidTestCase
He creado un caso de prueba de ejemplo que extiende AndroidTestCase. Cuando ejecuto el caso de prueba, se equivoca al decir
Running tests Test running startedTest running failed: Instrumentation run failed due to 'java.lang.RuntimeException' Empty test suite.
El caso de prueba
- Unidad de prueba SparseArray utilizando JUnit (utilizando JVM)
- Pruebas parametrizadas de instrumentación en Android
- Llamadas de método de burla usando power mockito - org.powermock.api.mockito.ClassNotPreparedException
- Cómo probar un proyecto de biblioteca de Android
- Pruebas de ejecución automática antes de la compilación de aplicaciones en Android Studio
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); } }
- Pruebas de JUnit parametrizadas en el proyecto de prueba de Android
- ¿Cómo puedo analizar una suite de pruebas junit?
- !!! JUnit versión 3.8 o posterior esperado
- Android Studio Unit Testing: incapaz de encontrar instrumentación O clase no encontrada ex
- Envío de mayúsculas a un TextEdit durante pruebas instrumentadas
- Android Robotium NoClassDefFoundError
- ¿Cómo ejecutar la prueba de unidad en un módulo de Android?
- Android Studio 1.1, instalación de prueba junit simple
Tengo 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 Gradle plugin 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 )
Puesto que nadie más lo menciona: los métodos en AndroidTestCase
subclases de AndroidTestCase
necesitan ser public
y tienen nombres que comienzan con "prueba"!
El OP y las respuestas todo esto bien, pero me perdí y obtuvo el mismo error.
Tengo este error porque uno de mis métodos de prueba no incluye "lanza excepción" después de la firma del método. Podría ayudar a alguien
Entiendo que esta pregunta es vieja, y las herramientas de desarrollo han cambiado significativamente desde que se ha hecho esta pregunta.
Sin embargo, tuve un problema similar (en AndroidStudio 2.1.1) y resultó que era sólo el mensaje de error que 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 está 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 logcat. Como resultado, no se ejecutaron los métodos de prueba, y Android Studio escribe este error "Empty test suite", un poco equivocado.
Es decir, "Empty test suite" puede significar lo que realmente dice (no se han declarado los métodos de prueba, por ejemplo, porque se olvidó anotarlos con @Test
), pero también puede significar que algo (como una excepción de tiempo de ejecución Código de inicialización de la aplicación) impide que el test-runner alcance cualquier método de prueba (que parece ser su caso).
Compruebe adb-logcat y busque RuntimeException
s. Esto probablemente le encontrará la causa raíz de su problema.
Mi problema era que tenía el constructor por defecto generado por el estudio de Android, se veía así
public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{ public SomeTest(Class<NewsActivity> activityClass) { super(activityClass); } }
Y tuve que cambiarlo a esto para deshacerme del problema
public class SomeTest extends ActivityUnitTestCase<ActivityYouWantToTest>{ public SomeTest() { super(ActivityYouWantToTest.class); } }
Tengo el mismo problema. Yo estaba teniendo testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
en mi defaultConfig {...}
. Acabo de quitar esa línea, y ahora está trabajando muy bien (El IDE está escogiendo el config derecho del corredor en tiempo de la estructura).
Espero que esto ayude a alguien.
Utilizamos 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.
El AndroidTestCase
no requiere sobrescribir el constructor predeterminado, ya que no proporciona una Activity
particular como Context
, sino que proporciona una información general para que puedas 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 AndroidTestCase
ser aplicable, una prueba que requiere recursos sería necesaria:
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í utilizamos AndroidTestCase
porque necesitamos acceder a los recursos de la aplicación.
Esta guía puede ayudar – http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio
En el último gradle (0.9+) la prueba debe estar bajo androidTest dir
También en su gradle.build:
dependencies { androidTestCompile 'junit:junit:4.+' }
También agrega aquellos bajo defaultConfig {
testPackageName "test.java.foo" testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
¿Configuró su testRunner en su gradleConfig? Utilizamos diferentes TestRunners para diferentes pruebas (para acelerar las cosas.
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á "Empty Test Suite".
Acabo de empezar a aprender sobre las pruebas de las aplicaciones de Android y he estado luchando con el mismo problema. Debe proporcionar un 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); } }
Ya tengo un constructor por defecto en mi caso de prueba, pero todavía me estaba dando error "Empty test suite" y estaba atascado en "Instantiating tests …".
Intenté crear un nuevo espacio de trabajo, restableciendo Android Studio, pero eso no funcionó.
Finalmente, cierre el SDK de Android y el emulador.
-
Ve a tu android-sdks / platform-tools.
-
Borrar 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
-
Correr:
./adb kill-server ./adb start-server
-
Inicie Android y ejecute el caso de prueba.
- Android: ¿Cómo configurar el volumen de MediaPlayer mediante programación?
- Estilo de código de Android en Intellij Idea / Android Studio