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(Native Method) 在 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) 在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

我是否在我的测试课程中遗漏了导致此问题的某些内容?

4

1 回答 1

5

问题是您使用它的方式无法使用robotium!

solo.clickOnButton() 有两种实现,一种将按钮中的文本作为参数,另一种采用索引。您正在传递按钮的 ID,它恰好是一个 int 值,但 int 值不是索引。

您希望您的代码改为以下内容:

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

如果您需要更多解释,我将很乐意提供帮助。

于 2013-03-07T16:56:03.510 回答