我试图用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
一起尝试过但没有区别。
有人能告诉我,我做错了什么吗?我很确定它的东西非常简单,但我只是无法看到它是什么:(
答案 0 :(得分:1)
假设您使用的是Robolectric 2.x,并使用@RunWith(RobolectricTestRunner.class)
注释了您的测试类,请执行以下操作:
mActivity = Robolectric.buildActivity(MainActivity.class).create().get();
而不是:
mActivity = new MainActivity();
mActivity.onCreate(new Bundle());