2

この問題に対する簡単なテスト プロジェクトがありますが、どのように失敗するのか理解できません。

テスト中のプロジェクトは、テスト目的でレイアウトにボタンのみを追加します。

<Button 
    android:id="@+id/test_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click" />

テストクラスは次のとおりです。

public class TestMainActivity extends ActivityInstrumentationTestCase2<MainActivity> {

    private Solo solo;

    public TestMainActivity() {
        super(MainActivity.class);
    }

    public void setUp() throws Exception {
        solo = new Solo(getInstrumentation(), getActivity());
    }

    public void test1() {
        solo.clickOnButton(com.example.testrobotium.R.id.test_button);
    }

    public void test2() {
    }

    @Override
    public void tearDown() throws Exception {
        solo.finishOpenedActivities();
    }
}

このテスト クラスを実行すると、次のようなエラー トレースが返され、clickOnButton の呼び出しが示されます。

junit.framework.AssertionFailedError: 2131165185 ボタンが見つかりません! com.jayway.android.robotium.solo.Waiter.waitForAndGetView(Waiter.java:417) で com.jayway.android.robotium.solo.Clicker.clickOn(Clicker.java:374) で com.jayway.android.robotium .solo.Solo.clickOnButton(Solo.java:1052) com.example.testrobotium.test.TestMainActivity.test1(TestMainActivity.java:22) で java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) で android .test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194) で android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186) で android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) で android.test.AndroidTestRunner. runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

この問題の原因となっているテスト クラスの何かが不足していますか?

4

1 に答える 1

5

問題は、あなたがそれを使用した方法でロボティウムが機能しないことです!

solo.clickOnButton() には 2 つの実装があります。1 つはボタン内のテキストを引数として持ち、もう 1 つはインデックスを取ります。たまたまint値であるボタンのIDを渡していますが、int値はインデックスではありません。

代わりに、コードを次のようにします。

solo.clickOnView(solo.getView(com.example.testrobotium.R.id.test_button));

さらに説明が必要な場合は、喜んでお手伝いします。

于 2013-03-07T16:56:03.510 に答える