私はAndroidアプリ用のJUnitテストケースを作成しています。テストクラスはActivityInstrumentationTestCase2
を拡張し、TextEdit
ウィジェットのユーザー入力をエミュレートするためにsendKeys()
を呼び出します。ただし、すべての英字キーコード(KeyEvent.KEYCODE_G
)は、小文字をTextEdit
に送信するだけです。私はKeyEvent.KEYCODE_SHIFT_LEFT
アルファベットキーコードを送信する前に送信しようとしましたが、それは動作していないようでした。だから、どのように私は大文字を入力してユーザーをシミュレートするのですか?計測されたテスト中にTextEditに大文字を送信する
編集:
私は手動で大文字を入力することができます。実際には、のEditTextが
<EditText android:id="@id/brand_text"
android:singleLine="true"
android:capitalize="words"
android:hint="@string/brand_hint"
/>
として定義されてandroid:capitalize="words"
属性は、エミュレータで大文字モードに画面上のキーボードを強制します。 (私はそれがデバイス上で同じことをするだろうと仮定しますが、それをテストするものはありません)SDKに付属のエミュレータはハードウェアキーボードをエミュレートしないので、UIの使い方をテストできませんでしたハードキー。
また、私はこれをしなかったとき
EditText brandText = this.activity.findViewById(R.id.brand_text);
brandText.setText(someString);
はしかし、テストが失敗してみました。私はそのコードを全て指揮していたので、今ここで詳細はわかりません。私はそれを作り直して、その質問をこのような詳細で編集しようとします。
sendKeys( "A")のように送信してみましたか。 KeyEvent.KEYCODE_Aの代わりに) –
@DurairajPはい、 'sendKeys(" A ")'は 'sendKeys(KeyEvent.KEYCODE_A)'に相当します。 [ドキュメントによる 'sendKeys(String)'](http://developer.android.com/reference/android/test/InstrumentationTestCase.html#sendKeys(int ...)): "一連のキーは文字列ですKEYCODE_接頭辞なしでKeyEventで指定されたキー名を含んでいます。 " –
@ Code-Guru:あなたの質問では、アルファベット順のコードの前に 'KeyEvent.KEYCODE_LEFT_SHIFT'を試してみました。私はそれが 'KeyEvent.KEYCODE_SHIFT_LEFT'でなければならないので、それがtypoであると仮定しています。 – Squonk