Traxex1909
Traxex1909

Reputation: 2710

Robolectric simple test

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

Answers (1)

Bart Kiers
Bart Kiers

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

Related Questions