Iniciar una segunda actividad dentro de un TestCase (que no es la actividad bajo prueba)
¿Cómo puedo iniciar una segunda actividad (simulacro) en un ActivityInstrumentationTestCase2 o InstrumentationTestCase?
Mi problema es este:
- Cómo correctamente mock HttpGet llamada en la prueba de Android
- ¿Cómo burlar el método antes de que se cree la actividad?
- Mock GPS Provider sólo funciona en modo de depuración
- ¿Es posible inyectar simulacros para realizar pruebas con AndroidAnnotations?
- Desarrollo impulsado por pruebas de Android
Intent intent = new Intent(getInstrumentation().getContext(), MyMock.class); myMock = (MyMock) getInstrumentation().startActivitySync(intent);
… los resultados en el error "la intención en el proceso … se resuelve a diferentes procesos … prueba". El uso de getTargetContext () para los resultados de Intent en "no se puede resolver la actividad para Intent", ya que mi clase de simulacro no forma parte del paquete de la aplicación.
08-07 19:38:25.822: INFO/TestRunner(2656): ----- begin exception ----- 08-07 19:38:25.822: INFO/TestRunner(2656): java.lang.RuntimeException: Unable to resolve activity for: Intent { cmp=com.cocktails/.test.recipes.RecipeBookMock } 08-07 19:38:25.822: INFO/TestRunner(2656): at android.app.Instrumentation.startActivitySync(Instrumentation.java:447) 08-07 19:38:25.822: INFO/TestRunner(2656): at com.cocktails.test.recipes.RecipeUpdaterTest.testNewRecipe(RecipeUpdaterTest.java:55) 08-07 19:38:25.822: INFO/TestRunner(2656): at java.lang.reflect.Method.invokeNative(Native Method) 08-07 19:38:25.822: INFO/TestRunner(2656): at java.lang.reflect.Method.invoke(Method.java:521) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:191) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:181) 08-07 19:38:25.822: INFO/TestRunner(2656): at junit.framework.TestCase.runBare(TestCase.java:127) 08-07 19:38:25.822: INFO/TestRunner(2656): at junit.framework.TestResult$1.protect(TestResult.java:106) 08-07 19:38:25.822: INFO/TestRunner(2656): at junit.framework.TestResult.runProtected(TestResult.java:124) 08-07 19:38:25.822: INFO/TestRunner(2656): at junit.framework.TestResult.run(TestResult.java:109) 08-07 19:38:25.822: INFO/TestRunner(2656): at junit.framework.TestCase.run(TestCase.java:118) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:164) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:151) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:425) 08-07 19:38:25.822: INFO/TestRunner(2656): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1520) 08-07 19:38:25.832: INFO/TestRunner(2656): ----- end exception -----
- ¿Cómo usar PowerMock en proyectos de Android?
- Roboguice y simulacros: ¿Cómo roboguice inyectar un servicio de simulacro cuando la prueba, pero utiliza el REAL de lo contrario?
- Prueba de unidad con Junit: prueba de recursos de red / bluetooth
- ¿Cómo probar correctamente ORM en android usando Mockito?
- Mocking up WifiManager para la prueba de unidad Android
- Android mock Cámara
- Prueba instrumental de una vista en MVP
- ¿Cómo enviar valores de Acelerómetro falsos a una aplicación en un dispositivo real?
Las aplicaciones de prueba no son "aplicaciones" en el sentido tradicional y no pueden iniciar sus propias actividades. Si necesita probar cómo su actividad responde a otras actividades enviándolo intenciones, puede usar el método ActivityInstrumentationTestCase2.setActivityIntent (Intent) para inyectar las diversas intenciones que desea probar, antes de llamar realmente a getActivity ().
public class ExampleTest extends ActivityInstrumentationTestCase2 { // if your test runs on the UI thread, you will need to setActivityIntent() // in setUp() as you won't have a chance to do it before the activity // is started // @UiThreadTest public void testMockIntent() { setActivityIntent(new Intent()); Activity foo = getActivity(); assertNotNull(foo); // your tests } }
- ¿Cómo verificar si una actividad está en modo de pantalla completa?
- Cómo cambiar imágenes en lienzo en android?