Robolectric:findViewById给出了视图,但performClick()返回false

时间:2013-01-22 19:31:51

标签: android testing robolectric findviewbyid

我正在使用Robolectric在Android应用上执行单元测试。 问题很简单:我可以使用findViewById获取我的Button,但调用它performClick()方法或Robolectric.clickOn()将返回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
  }
}

谢谢大家。

保罗

2 个答案:

答案 0 :(得分:1)

根据the documentation for performClick(),如果为按钮分配了OnClickListener,则该方法将返回true。

......你呢?

答案 1 :(得分:1)

通常,您可以在setContentView方法中调用onCreate。因此,setContentView方法中对setUp的调用是多余的,可能会导致问题。