java - 在仪器测试期间将大写字母发送到 TextEdit

标签 java android testing junit 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"
    />

android:capitalize="words" 属性强制屏幕键盘在模拟器中进入大写模式。 (我假设它会在设备上做同样的事情,但没有人可以测试它。)由于 SDK 附带的模拟器不模拟硬件键盘,我一直无法测试我的 UI 是如何工作的硬键。

我也试过

EditText brandText = this.activity.findViewById(R.id.brand_text);
brandText.setText(someString);

但是,当我这样做时,测试失败了。我砍掉了所有的代码,所以我现在没有详细信息。我将尝试重新创建它并使用这些详细信息编辑此问题。

最佳答案

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

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

关于java - 在仪器测试期间将大写字母发送到 TextEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280080/

相关文章:

android - 构造函数 Intent(new View.OnClickListener(){}, Class<DrinksTwitter>) 未定义

java - 为什么我的测试在单次执行中运行不到 1 秒,但在 Maven 构建中运行超过 20 秒?

api - 无法初始化类 jmeter HTTPHC4Impl

unit-testing - 为什么要统计函数在单元测试中被调用的次数

java - 如何在使用 VAADIN 填充文本字段时启用按钮

java - 项目未正确添加到 arrayList

android - 如何在构建 Android 应用程序的发布版本之前删除所有调试日志记录调用?

android - 每次滚动时 RecyclerAdapter 都会重新加载项目 - Android Studio

java - 使用 JSTL 获取 URL # 哈希

java - Facebook 应用程序 - 如何在用户的墙上帖子上发布动态内容