Opracowuję swoją pierwszą aplikację na Androida i konfigurowałem serwer CI. Moje testy espresso działać dobrze na moim komputerze, ale Travis błędów out z następującymOdblokuj ekran emulatora za pomocą espresso
java.lang.RuntimeException: Czekaliśmy korzenia hierarchii widoku mieć okno ostrość i nie będzie zainteresowanie układ przez ponad 10 sekund.
Wygląda na to, że przed uruchomieniem testów muszę odblokować ekran emulatora. Aby to zrobić muszę dodać manifestu do src/debug
z wymaganych uprawnień, a następnie odblokować ekran:
KeyguardManager mKeyGuardManager = (KeyguardManager) ctx.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock mLock = mKeyGuardManager.newKeyguardLock(name);
mLock.disableKeyguard();
Chodzi o to, że nie chcą miotu moje działania z powyższym kodem owiniętego czy bloków. Czy istnieje sposób na odblokowanie ekranu z samego testu espresso?
Moje testy espresso:
@RunWith(AndroidJUnit4.class)
public class EspressoSetupTest {
@Rule
public final ActivityTestRule<WelcomeActivity> activity =
new ActivityTestRule<>(WelcomeActivity.class, true, true);
@Test
public void launchTest() {
onView(withId(R.id.welcome_textView_hello))
.perform(click())
.check(matches(withText("RetroLambda is working")));
}
}
I konfiguracja espresso jest inna. Nie mam dostępu do kontekstu i jak powinna utrzymywać się nazwa? –
Edytowałem swoją odpowiedź, aby było bardziej zrozumiałe. Możesz użyć działania, aby uzyskać usługę systemową. Zmienna nazwa jest tylko znacznikiem, do tego celu można użyć statycznego ciągu znaków KEYGUARD_SERVICE. – woley
Dzięki! Moja klasa testowa espresso naprawdę niczego nie podklaskuje. Dostaję instancję działania za pomocą ActivityTestRule.getActivity() i umieszczenie kodu w metodzie @Before setUp(), ale to nie zadziałało. –