0

EditText ウィジェットと Button ウィジェットを含むアクティビティがあります。ボタンをクリックすると、EditText が空の場合、またはsetResult()このアクティビティを起動した別のアクティビティに値を送り返すために呼び出しが行われた場合に、エラー メッセージが出力されます。

この相互作用が機能することを確認するために、いくつかの簡単な単体テストを作成しています。同じテストの 2 つの異なるバージョンがあります。

@UiThreadTest
public void testOkButtonOnClickWithNumber() {
    this.numberText.setText(Integer.toString(this.testNumber));
    Assert.assertTrue(this.okButton.performClick());
    Assert.assertTrue(this.activity.isFinishing());
}

public void testOkButtonOnClickWithUserInputNumber() throws Throwable {
    this.sendKeys(Integer.toString(this.testNumber));

    this.runTestOnUiThread(new Runnable() {
        @Override
        public void run() {
            Assert.assertTrue(NumberFilterTest.this.okButton.performClick());
        }
    });

    this.getInstrumentation().waitForIdle(new Runnable() {
        @Override
        public void run() {
            Assert.assertTrue(NumberFilterTest.this.activity.isFinishing());
        }
    });
}

ご覧のとおり、1 つのテストは単にsetText()EditText ウィジェットを呼び出すだけです。他の用途sendKeys()。テスト中にこれら 2 つのオプションのどちらを使用するのが望ましいベスト プラクティスはありますか? または、両方のテストを保持する必要がありますか?

4

1 に答える 1

2

古い問題に対する新しい答えがある可能性があります。http: //developer.android.com/tools/testing/testing_ui.html adt21の一部としてリリースされたばかりです。Androidのテストを始めたばかりの場合は、一見の価値があります。これ。

実際の質問は。sendKeys()の使用は、ユーザーが実際に行うことに近いため、たとえばテキストの編集やキーの押下にリスナーがいる場合、実際に解雇されます。通常、この機能を使用していない可能性があるため、これは問題にはならない可能性がありますが、気づかなかった場合は問題になる可能性があります。このような別の例は、ボタンをクリックする方法です。現在、クリックメソッドを呼び出しています。これは、実際にはユーザーが行うことであるため、ボタンの場所を介してタッチイベントを送信するのが望ましい方法です。

于 2012-11-15T00:14:46.663 に答える