Anotación @UiThreadTest produce "java.lang.Exception: No se pueden ejecutar métodos"
He estado tratando de escribir una prueba de unidad que funciona con barras del sistema. Estaba recibiendo errores al intentar acceder a las cosas desde el subproceso equivocado: android.view.ViewRootImpl $ CalledFromWrongThreadException: Sólo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas.
He leído que el uso de la anotación @UiThreadTest hará que mi caso de prueba se ejecute en el hilo ui y resolver el error. Sin embargo, cuando lo uso recibo este error: java.lang.Exception: No hay métodos ejecutables
- Cómo generar un informe de cobertura de código de casos de prueba de instrumentación en Android Studio
- Prueba de la unidad Android: Bundle / Parcelable
- Acceso al contexto de la aplicación desde TestSuite en Setup () antes de llamar a getActivity ()
- Android prueba: cómo comprobar un diálogo se muestra en la pantalla? (mediante ActivityInstrumentationTestCase2)
- Android Test Case - ¿cómo ver la salida?
He agregado el UiThreadTestRule y asegurado thatI'm que importa android.support.test.annotation.UiThreadTest, pero en ninguna utilidad.
¿Hay algo más que me falta?
import android.support.test.InstrumentationRegistry; import android.support.test.rule.UiThreadTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.ActivityInstrumentationTestCase2; import android.view.View; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import android.support.test.annotation.UiThreadTest; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) /** * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> */ public class SystemBarSetterTest extends ActivityInstrumentationTestCase2<SystemBarSetter> { private SystemBarSetter setter; public SystemBarSetterTest() { super(SystemBarSetter.class); } @Rule public UiThreadTestRule mUiThreadTestRule = new UiThreadTestRule(); @Before public void setUp() throws Exception { super.setUp(); injectInstrumentation(InstrumentationRegistry.getInstrumentation()); setter = getActivity(); } @Override public void runTestOnUiThread(Runnable r) throws Throwable { super.runTestOnUiThread(r); } @Test public void testImmersiveSticky() throws Exception { setter.setImmersiveStickyMode(); int requiredFlags = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; assertEquals(requiredFlags, setter.getCurrentUiVisibility()&requiredFlags); } }
- ¿Cómo puedo crear pruebas en Android Studio?
- IllegalStateException en Android Support al ejecutar pruebas de unidad
- Prueba de ciclo de vida de la actividad de Android
- Creación de un simulador de AlarmManager para la prueba
- ¿Ejecutar pruebas de unidad android desde la línea de comandos?
- Android compartió código generado entre test y androidTest
- Schedulers.immediate () no funciona con las pruebas de gradle de la línea de comandos
- Cómo probar una actividad usando google-api-client
- ViewRootImpl.setPausedForTransition (boolean) NullPointerException en ActivityTransitionCoordinator cuando la transición a otra Actividad se invoca demasiado pronto
- Creación de un menú desplegable desde un archivo .json