2013-08-06 162 views
1

我试图用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

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

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

代替:

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

还是一样:(我使用Robolectric 2.1,我已经标注了'@RunWith(RobolectricTestRunner.class)'类我猜它与我在哪里以及如何设置'et1'和'et2'有关。 – Traxex1909