1

我正在使用 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
  }
}

谢谢大家。

保罗

4

2 回答 2

1

根据performClick() 的文档,如果您为按钮分配了 OnClickListener,该方法将返回 true。

...你是否?

于 2013-01-22T19:35:44.357 回答
1

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

于 2013-01-22T19:44:10.990 回答