Reputation: 2710
I was trying to test a very simple calculator app with Robolectric.
@Before
public void setUp(){
mActivity = new MainActivity();
mActivity.onCreate(new Bundle());
et1 = (EditText) mActivity.findViewById(com.mamlambo.article.simplecalc.R.id.value1);
et2 = (EditText) mActivity.findViewById(com.mamlambo.article.simplecalc.R.id.value2);
btnAdd = (Button) mActivity.findViewById(com.mamlambo.article.simplecalc.R.id.addValues);
btnMult = (Button) mActivity.findViewById(com.mamlambo.article.simplecalc.R.id.multiplyValues);
result = (TextView) mActivity.findViewById(com.mamlambo.article.simplecalc.R.id.result);
}
@Test
public void test(){
et1.setText("20");
et2.setText("20");
btnAdd.performClick();
assertThat("40", equalTo(result.getText().toString()));
}
But after running the test the assertion says
java.lang.AssertionError:
Expected: ""
got: "40"
I am guessing that the EditText is not getting set. I have tried it with and without TextView.BufferType.EDITABLE
but it makes no difference.
Can someone tell me what is it that i am doing wrong ? I'm pretty sure that its something extremely simple but i'm just not able to see what it is :(
Upvotes: 1
Views: 152
Reputation: 170138
Assuming you're using Robolectric 2.x, and have annotated your test class with @RunWith(RobolectricTestRunner.class)
, what if you do:
mActivity = Robolectric.buildActivity(MainActivity.class).create().get();
instead of:
mActivity = new MainActivity();
mActivity.onCreate(new Bundle());
Upvotes: 1