我正在使用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
}
}
谢谢大家。
保罗答案 0 :(得分:1)
根据the documentation for performClick(),如果为按钮分配了OnClickListener,则该方法将返回true。
......你呢?
答案 1 :(得分:1)
通常,您可以在setContentView
方法中调用onCreate
。因此,setContentView
方法中对setUp
的调用是多余的,可能会导致问题。