私はEditTextと(EditTextの下の)ボタンで画面を持っています。必要条件は、ショーソフトキーボードがボタンの下になければならないときです。それをチェックするエスプレッソユニットテスト(またはアノテアテスト)を書くことは可能ですか?Android、エスプレッソ。どのようにソフトキーボードが見えていますか?
0
A
答えて
0
アンドロイドキーボードはあなたのアプリではなくシステムの一部です。エスプレッソでは十分ではありません。
私は私のテスト活動に次のレイアウト作成:あなただけのエスプレッソ汚れたソリューションを使用したい場合だろう
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.masta.testespressoapplication.MainActivity">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="TEST" />
</RelativeLayout>
を:
@Test
public void checkButtonVisibilty2() throws Exception {
onView(withId(R.id.edittext)).perform(click());
try {
onView(withId(R.id.button)).perform(click());
throw new RuntimeException("Button was there! Test failed!");
} catch (PerformException e) {
}
}
このテストでは、ボタンをクリックしようとするだろうこれは、実際にはソフトキーボードをクリックするので、PerformExceptionをスローします。これは許可されていません。 しかし、私はこの方法をお勧めしません、それはエスプレッソのフレームワークのかなりの誤用です。
ソリューション少し良く私見では、AndroidのUI Automatorのを使用して次のようになります。
@Test
public void checkButtonVisibilty() throws Exception {
onView(allOf(withId(R.id.edittext), isDisplayed())).perform(click());
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject button = mDevice.findObject(new UiSelector().resourceId("com.example.masta.testespressoapplication:id/button"));
if (button.exists()) {
throw new RuntimeException("Button is visible! Test failed!");
}
}
これは、ボタンのUI要素を取得し、それが現在の画面内に存在するかどうかを確認しようとするAndroidのUIのAutomatorを使用しています。
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support:support-annotations:25.2.0'
一般的な思考:テストのこの種はそうuは、この追加Gradleの輸入を必要とするAndroidのUIのAutomatorのために
(あなたのケースのためのもので呼び出す「RESOURCEID」のパッケージとidを置き換えます)あなたがソフトキーボードを実際に制御することができず、それがどのように見えるかということから、非常にエラーが発生しやすいので、注意して使用します。
関連する問題
- 1. エスプレッソを使用してソフトキーボードが表示されているかどうかをテストします。
- 2. ImageViewにdrawableが含まれているかどうかのエスプレッソ
- 3. Android:どのように表示が見えるようになったかを教えてください。
- 4. どのように私はこのようなソフトキーボードを起動していますソフトキーボード
- 5. Androidでは、どのようにソフトキーボードにビューを添付しますか?
- 6. Androidアプリの消えるソフトキーボード
- 7. Android:どのようにTextViewをテーマにしてListViewのアイテムのように見えますか?
- 8. Androidのソフトキーボードが
- 9. 何かが間違っているように見えます
- 10. Genieではどのようにスイッチインターフェイスが見えますか?
- 11. 私がどのように見えるファイル持っている[[...]]
- 12. どのようにXMLファイルにソフトキーボード
- 13. Android - 解雇された通話はどのように見えますか?
- 14. ソフトキーボードがAndroidで開いているかどうかを検出する方法はありますか?
- 15. Androidアプリをきれいに見えるようにするにはどうすればよいですか?
- 16. コレクティブインテリジェンスはエキスパートの意見をどのように捉えていますか?
- 17. Xcodeのビューコントローラのコードビューはどのように見えますか?
- 18. ネットワークのマシンコードはどのように見えますか?
- 19. WebRTCピアネゴシエーションのワークフローはどのように見えますか?
- 20. ocamlのcompare関数はどのように見えますか?
- 21. タイムラインのテンプレートはどのように見えますか?
- 22. サービスアカウントのjsonファイルはどのように見えますか?
- 23. 私の剣道データソーススキーマはどのように見えますか?
- 24. CGContextRefの座標系はどのように見えますか?
- 25. 私のページはどのように見えますか?
- 26. ジャスミン標準のディレクトリツリーはどのように見えますか?
- 27. このswigコードはどのようにヒスイのように見えますか?
- 28. すべてのアンドロイド携帯端末でAndroidアプリが同じように見えるようにするにはどうすればよいですか?
- 29. uitextfieldが洞窟のように見えるようにするにはどうすればよいですか?
- 30. weak-strongリファレンスはobjective-cのようにどのように見えますか?
私の回答はあなたの問題を解決するのに役立ちましたか? – stamanuel
それは役に立ちません。あなたのテストは、ボタンが見えるときに合格するからです。しかし、私は、ボタンが見える場合とボタンの下の境界がソフトキーボードの上にある場合のみ、パスをテストする必要があります。 – Alexei
ok、キーボードがボタンの上にわずかながらもテストに合格することを意味しますか?これはアンドロイドエスプレッソが90%の可視性ルールを持っているからです(=ビューアイテムの90%が見える場合はテストに合格します)。あなたはこれを上書きすることができ、ボタンは100%可視性を持たなければならない – stamanuel