在Robotium clickOnButton的一个类中进行2次测试

yjw*_*yjw 2 testing android robotium

我有一个针对这个问题的简单测试项目,我无法理解它将如何失败.

被测项目仅为布局添加了一个按钮,用于测试.

<Button 
    android:id="@+id/test_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click" />
Run Code Online (Sandbox Code Playgroud)

这是测试类:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

执行此测试类时,返回的错误跟踪如下所示,指向对clickOnButton的调用:

junit.framework.AssertionFailedError:2131165185找不到按钮!at com.jayway.android.robotium.solo.Waiter.waitForAndGetView(Waiter.java:417)at com.jayway.android.robotium.solo.Clicker.clickOn(Clicker.java:374) at com.jayway.android.robotium .solo.Solo.clickOnButton(Solo.java:1052 )位于android.test的java.lang.reflect.Method.invokeNative(Native Method)的com.example.testrobotium.test.TestMainActivity.test1(TestMainActivity.java:22) android.test.AndroidTestRunner.runTest上android.test.AnstrumentationTestCase.runTest(ActivityInstrumentationTestCase2.java:186)的android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)上的.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204) AndroidT.Transner.java:169)在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java)的android.test.AndtrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)上的android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) :1448)

我在测试类中遗漏了导致此问题的内容吗?

Pau*_*ris 5

问题是robotium不能用你如何使用它!

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

您希望代码改为:

solo.clickOnView(solo.getView(com.example.testrobotium.R.id.test_button));
Run Code Online (Sandbox Code Playgroud)

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