在检测测试期间将大写字母发送到TextEdit

Cod*_*ice 5 java testing junit android user-input

我正在为我的Android应用程序编写一个JUnit测试用例.测试类扩展ActivityInstrumentationTestCase2并调用sendKeys()以模拟TextEdit窗口小部件的用户输入.但是,所有字母键码(例如KeyEvent.KEYCODE_G)仅将小写字母发送给TextEdit.我KeyEvent.KEYCODE_SHIFT_LEFT在发送字母键码之前尝试发送,但这似乎不起作用.那么如何模拟用户输入大写字母?

编辑:

我可以手动输入大写字母.实际上,EditText被定义为

    <EditText android:id="@id/brand_text"
              android:singleLine="true"
              android:capitalize="words"
              android:hint="@string/brand_hint"
    />
Run Code Online (Sandbox Code Playgroud)

android:capitalize="words"属性强制屏幕键盘在模拟器中进入大写模式.(我假设它会在设备上执行相同操作,但没有一个可以测试它.)由于SDK附带的模拟器不能模拟硬件键盘,我无法测试我的UI如何工作硬键.

我也试过了

EditText brandText = this.activity.findViewById(R.id.brand_text);
brandText.setText(someString);
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,测试失败了.我把所有代码都砍掉了,所以我现在还没有详细说明.我将尝试重新创建它并使用这些细节编辑此问题.

Cod*_*ice 4

我没有在我的OP中提到我正在编写一种将 a 的字符发送String到文本框的方法。我尝试setText()按照@PaulHarris的建议使用,但无法让它工作;我的测试仍然失败了一些断言。

经过一番挖掘,终于找到了Instrumentation.sendStringSync()适合我的目的的方法。(您可以通过在测试类中Instrumentation调用getInstrumentation()来获取对象。)