Tôi đang viết một trường hợp kiểm tra JUnit cho ứng dụng Android của mình. Lớp kiểm tra mở rộng ActivityInstrumentationTestCase2
và gọi sendKeys()
để mô phỏng đầu vào của người dùng cho các tiện ích TextEdit
. Tuy nhiên, tất cả các mã khóa chữ cái (ví dụ: KeyEvent.KEYCODE_G
) chỉ gửi các chữ cái viết thường đến TextEdit
. Tôi đã thử gửi KeyEvent.KEYCODE_SHIFT_LEFT
trước khi gửi mã khóa chữ cái, nhưng điều đó dường như không hoạt động. Vậy làm thế nào để mô phỏng người dùng gõ một chữ hoa?Gửi các chữ cái viết hoa lên TextEdit trong các bài kiểm tra cụ thể
Edit:
Tôi có thể nhập chữ cái viết hoa bằng tay. Thực tế, EditText được định nghĩa là
<EditText android:id="@id/brand_text"
android:singleLine="true"
android:capitalize="words"
android:hint="@string/brand_hint"
/>
Thuộc tính android:capitalize="words"
buộc bàn phím ảo vào chế độ chữ hoa trong trình giả lập. (Tôi giả định nó sẽ làm tương tự trên một thiết bị nhưng không có một để kiểm tra nó trên.) Kể từ khi giả lập mà đi kèm với SDK không mô phỏng bàn phím phần cứng, tôi đã không thể kiểm tra giao diện người dùng của tôi hoạt động như thế nào phím cứng.
Tôi cũng đã cố gắng
EditText brandText = this.activity.findViewById(R.id.brand_text);
brandText.setText(someString);
Tuy nhiên, thử nghiệm thất bại khi tôi đã làm điều này. Tôi rìu tất cả mã đó, vì vậy tôi không có chi tiết ở đây vào lúc này. Tôi sẽ cố gắng tạo lại nó và chỉnh sửa câu hỏi này với những chi tiết đó.
Bạn đã thử gửi như sendKeys ("A"); thay vì KeyEvent.KEYCODE_A) –
@DurairajP Có, 'sendKeys (" A ")' tương đương với 'sendKeys (KeyEvent.KEYCODE_A)'. [Theo tài liệu 'sendKeys (String)'] (http://developer.android.com/reference/android/test/InstrumentationTestCase.html#sendKeys (int ...)): "Chuỗi khóa là một chuỗi chứa các tên khóa như được chỉ định trong KeyEvent, không có tiền tố KEYCODE_. " –
@ Code-Guru: Trong câu hỏi của bạn, bạn nói bạn đã thử 'KeyEvent.KEYCODE_LEFT_SHIFT' trước mã chữ cái. Tôi giả sử đó là lỗi đánh máy vì nó phải là 'KeyEvent.KEYCODE_SHIFT_LEFT'. – Squonk