android - Robolectric : findViewById gives view, 但 performClick() 返回 false

标签 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
  }
}

谢谢大家

保罗

最佳答案

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

...是吗?

关于android - Robolectric : findViewById gives view, 但 performClick() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466556/

相关文章:

android - 如何在 Android 中模拟 DateFormat.is24HourFormat() 进行单元测试?

android - 调试器在 Android Studio 中不再活跃

php - Selenium 不适用于 Firefox 57 on php

testing - 如果测试因某个阈值而失败,请重试 teamcity 构建

testing - 在跨浏览器测试期间同步用户输入

android - 使用 gradle 进行 android 项目的 junit 测试

Fragment 的 Android 单实例

java - ListView 的自定义行

android - 喷气背包组成。导航 IllegalStateException

android - 在 Robolectric 测试之间重置