【问题标题】:Robotium: Test run failed to complete. Expected N tests, received (N-1)Robotium:测试运行未能完成。预期 N 次测试,已收到 (N-1)
【发布时间】:2015-10-05 21:27:56
【问题描述】:

Android 测试仍然让我头疼。我创建了一个最简单的应用程序,只是为了弄清楚 Robotium 的工作原理,并且每次测试失败并出现错误:

Running tests
Test running started
Test failed to run to completion. Reason: 'Test run failed to complete. Expected 1 tests, received 0'. Check device logcat for details
Test running failed: Test run failed to complete. Expected 1 tests, received 0

一旦我有“预期 3 次测试,收到 2 次”代替。满足使用无参数构造函数的条件。如何解决这个问题?

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText editText = (EditText)findViewById(R.id.input);

        final TextView textView = (TextView)findViewById(R.id.output);
        Button button = (Button) findViewById(R.id.enter);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textView.setText(String.valueOf(editText.getText()));
            }
        });
    }
}

MainActivityTest.java

@SuppressWarnings("unchecked")
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

    private Solo solo;

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

    public void testRun() throws Throwable {
        super.runTest();
        solo = new Solo(getInstrumentation(), getActivity());
        solo.waitForActivity(MainActivity.class);
        solo.assertCurrentActivity("error", MainActivity.class);
        solo.typeText((EditText) solo.getView(R.id.input), "alice");
        solo.clickOnView(solo.getView(R.id.enter));
        assertNotEquals("cooper", ((TextView) solo.getView(R.id.output)).getText());
        assertEquals("alice", ((TextView) solo.getView(R.id.output)).getText());
    }
}

这个默认测试是绿色的:

    public class ApplicationTest extends ApplicationTestCase<Application> {
    public ApplicationTest() {
        super(Application.class);
    }
}

【问题讨论】:

    标签: robotium android-testing


    【解决方案1】:

    我建议从 testRun() 方法中删除以下行

    super.runTest();
    solo = new Solo(getInstrumentation(), getActivity());
    

    改为添加以下方法

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

    另外请添加tearDown方法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多