1

我试图用 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()));
}

但是在运行测试之后,断言说

java.lang.AssertionError: 
Expected: ""
          got: "40"

我猜 EditText 没有设置。我试过有无TextView.BufferType.EDITABLE,但没有区别。

有人可以告诉我我做错了什么吗?我很确定它非常简单,但我只是无法看到它是什么:(

4

1 回答 1

1

假设您使用的是 Robolectric 2.x,并且已经用 注释了您的测试类@RunWith(RobolectricTestRunner.class),如果您这样做:

mActivity = Robolectric.buildActivity(MainActivity.class).create().get();

代替:

mActivity = new MainActivity();
mActivity.onCreate(new Bundle());
于 2013-08-06T12:59:09.880 回答