我正在使用Robolectric在Android應用上執行單元測試。 問題很簡單:我可以使用findViewById獲取我的Button,但調用方法performClick()
方法或Robolectric.clickOn()
將返回false。Robolectric:findViewById給出視圖,但performClick()返回false
但是按鍵完美的作品,通過應用程序或Robotium單元測試,測試......
這裏是測試代碼未通過:
@RunWith(RobolectricTestRunner.class)
public class RegisterActivityTest {
private MainActivity mainActivity;
private LoginActivity loginActivity;
@Before
public void setUp(){
mainActivity=new MainActivity();
mainActivity.onCreate(null);
mainActivity.setContentView(R.layout.main);
}
@Test
public void testButton() throws Exception {
Button buttonPayment=(Button)mainActivity.findViewById(R.id.btn_payment);
assertNotNull(buttonPayment); // will pass test (---> the view is a button and exists)
assertTrue(buttonPayment.performClick()); // raise AssertionError
assertTrue(Robolectric.clickOn(buttonPayment)); // raise AssertionError as well
}
}
謝謝大家。
保羅
我很好奇爲什麼你打電話onCreate,然後setContentView(R.layout.main)?你的onCreate不應該這樣調用? –
你是絕對正確的,這個電話是無用的。只是我有幾個錯誤,所以不同嘗試修復performClick()問題。我現在刪除它 – user1987343
好的馬特沃爾夫顯然問題來自雙重調用,導致現在斷言通過。非常感謝 ! – user1987343