Robotium: Test run failed. Expected N tests received (N-1)
Android testing is still my headache. I have created the simplest application to clarify how Robotium works and tests fail every time:
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
As soon as I got "Expected 3 tests, got 2". The condition for using the no-args constructor is met. How to solve this problem?
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());
}
}
This test is green by default:
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
+3
source to share
1 answer
I suggest removing the following lines from the testRun () method
super.runTest();
solo = new Solo(getInstrumentation(), getActivity());
Add the following method instead
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
Also add tearDown method
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
0
source to share