2012-07-27 6 views
8

Próbuję uruchomić wiele przypadków testowych dla aktywności logowania za pomocą ActivityInstrumentationTestCase2. Pierwszy przypadek testowy sprawdza pomyślność logowania, co powoduje, że Aktywność uruchamia następną Aktywność, wywołując funkcję startActivity (intent intent). Teraz na Aktywności, którą próbuję przetestować, jest inna aktywność. Pierwszy przypadek testowy przechodzi i rozpoczyna się drugi przypadek testowy. Jednak na zawsze zawiesi się w getActivity(), gdy jest wywoływana przez drugi przypadek testowy.Test urządzenia Android z ActivityInstrumentationTestCase2, getActivity() zawiesza się, gdy poprzedni przypadek testowy powoduje uruchomienie innego działania

Jeśli przejdę do kodu aktywności logowania i skomentuję część, która wywołuje funkcję startActivity (intent intent), wtedy oba testy będą działać poprawnie.

Próbowałem już kilku rzeczy. Użyłem Intent.FLAG_ACTIVITY_CLEAR_TOP, aby wyczyścić stos działań. W takim przypadku najwyższa aktywność zostanie zamknięta, a działanie związane z logowaniem zostanie ujawnione, ale nadal utknie w funkcji getActivity() po rozpoczęciu drugiego przypadku testowego.

Próbowałem również wysłaćKeys (KeyEvent.KEYCODE_BACK), ale to nie ma efektów.

Co mogę zrobić, aby temu zaradzić? Dzięki!

+0

getInstrumentation() addMonitor (NextActivity.class.getName(), pusty, prawdziwe.); Podstęp! – initialxy

Odpowiedz

4
getInstrumentation().addMonitor(NextActivity.class.getName(), null, true); 

Podstępem. Zauważ, że ostatnim parametrem jest flaga wskazująca, czy blokować uruchamianie aktywności. Ustawienie na true rozwiązało problem.

link to doc

+3

Skąd dodasz to połączenie? Czy możesz umieścić bardziej kompletną odpowiedź? –

Powiązane problemy