Piszę test JUnit dla mojej aplikacji na Androida. Klasa testowa obejmuje ActivityInstrumentationTestCase2
i wywołuje sendKeys()
, aby emulować dane wejściowe użytkownika dla widgetów TextEdit
. Jednak wszystkie kody alfabetyczne (na przykład KeyEvent.KEYCODE_G
) wysyłają tylko małe litery do TextEdit
. Próbowałem wysłać KeyEvent.KEYCODE_SHIFT_LEFT
przed wysłaniem kodu alfabetycznego, ale to nie działało. Jak więc zasymulować wpisanie wielkiej litery przez użytkownika?Wysyłanie dużych liter do TextEdit podczas testowanych testów
Edit:
mogę ręcznie wprowadzić wielkimi literami. W rzeczywistości, EditText jest zdefiniowany jako
<EditText android:id="@id/brand_text"
android:singleLine="true"
android:capitalize="words"
android:hint="@string/brand_hint"
/>
Atrybut android:capitalize="words"
zmusza klawiaturę ekranową w tryb wielkich liter w emulatorze. (Zakładam, że zrobi to samo na urządzeniu, ale nie ma go do przetestowania.) Ponieważ emulator, który jest dostarczany z SDK, nie emuluje klawiatury sprzętowej, nie byłem w stanie przetestować działania mojego interfejsu twarde klucze.
Próbowałem też
EditText brandText = this.activity.findViewById(R.id.brand_text);
brandText.setText(someString);
Jednak test zakończył się niepowodzeniem, kiedy to zrobił. Osiągnąłem ten kod, więc nie mam tutaj w tej chwili żadnych szczegółów. Spróbuję odtworzyć to i edytować to pytanie z tymi szczegółami.
Czy próbowałeś wysyłać jak sendKeys ("A"); zamiast KeyEvent.KEYCODE_A) –
@DurairajP Tak, 'sendKeys (" A ")' jest równoważne 'sendKeys (KeyEvent.KEYCODE_A)'. [Zgodnie z dokumentami 'sendKeys (String)'] (http://developer.android.com/reference/android/test/InstrumentationTestCase.html#sendKeys (int ...)): "Sekwencja klawiszy jest ciągiem znaków zawierające nazwy kluczy określone w KeyEvent, bez prefiksu KEYCODE_. " –
@ Code-Guru: W swoim pytaniu mówisz, że wypróbowałeś 'KeyEvent.KEYCODE_LEFT_SHIFT' przed kodem alfabetycznym. Zakładam, że to literówka, jak powinno być 'KeyEvent.KEYCODE_SHIFT_LEFT'. – Squonk