2013-08-06 230 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