Robolectric简单测试

时间:2013-08-06 12:33:01

标签: android robolectric

我试图用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一起尝试过但没有区别。

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

1 个答案:

答案 0 :(得分:1)

假设您使用的是Robolectric 2.x,并使用@RunWith(RobolectricTestRunner.class)注释了您的测试类,请执行以下操作:

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

而不是:

mActivity = new MainActivity();
mActivity.onCreate(new Bundle());