我有一个针对这个问题的简单测试项目,我无法理解它将如何失败。
正在测试的项目仅为布局添加一个按钮以进行测试。
<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) at com.jayway.android.robotium.solo.Solo.clickOnButton(Solo.java:1052) at com.example.testrobotium.test.TestMainActivity.test1(TestMainActivity.java:22) at 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)
我的测试类中是否遗漏了导致此问题的内容?
答案 0 :(得分:5)
问题是机器人无法正常使用它!
solo.clickOnButton()有两个实现,一个是按钮中的文本作为参数,另一个是索引。您正在传递按钮的ID,该ID恰好是一个int值,但int值不是索引。
您希望代码改为:
solo.clickOnView(solo.getView(com.example.testrobotium.R.id.test_button));
如果您需要更多解释,我将很乐意为您提供帮助。