2013-11-22 87 views
2

我试图解决以下代码中的问题,我必须测试: 我正在使用Mockito和Robotium来解决大多数测试案例。 的问题是由一个请求对话框的用户嘲笑答案开始通过:如何模拟BluetoothAdapter.ACTION_REQUEST_ENABLE

Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, BluetoothAdapterService.REQ_BT_ENABLE); 

答案由

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

    if (requestCode == 1) {                /*TODO: für 1 eine Konstante verwenden, hier und in der aufrufenden Funktion*/ 
     if (resultCode == BluetoothAdapterService.REQ_BT_ENABLE) {     /*TODO RequestCode == ResultCode dh. der COde kann hier optimiert werden*/ 
      btAdapterService.setBluetoothState(BluetoothAdapterService.ON); 
     } 
     else { 
      btAdapterService.setBluetoothState(BluetoothAdapterService.OFF);   /* Wenn keine Verbindung aufgebaut werden konnte, oder die Aktivierungsaufforderung des -> */                   /* BT-Adapters mit nein quittiert wurde, ist der resultCode = RESULT_CANCELD = 0 */ 
     } 
    } 
} 

我已经尝试了一些解决方案,以获得按钮点击,显示了缓存在测试过程中,但尽管使用robotium荫我不能存取权限由

solo.clickOnText("No"); 

按钮是否也可以请求粘贴到另一个类,并调用我为了它吗?所以我可以以不同的方式重用请求?我尝试了这一点,但后来我得到了没有请求显示的问题,我得到一个异常。

我不是一个indeep程序员,我已经开始了解这个话题。我会感谢每一个帮助。

+0

你打算用蓝牙适配器做什么? – maszter

+0

根据蓝牙状态,用户可以获得上面列出的用户对话框来激活BT。它的意图开始了。当我得到这个对话框时,我希望能够通过回调函数选择打开或关闭。也许有一种更简单的方法与Robotium,但直到现在我还没有发现得到这个特殊的对话框和他的按钮。 – user2955547

+0

那么你打算打开/关闭蓝牙? – maszter

回答

1

我不知道你的测试的目的是什么。至于我,这听起来像你想确保你的代码正确处理用户的答案。

因此,对于我来说,只需拨打onActivityResult(1,BluetoothAdapterService.REQ_BT_ENABLE)即可,并在启用蓝牙后检查。

+0

只是为了执行_onActivityResult(1,BluetoothAdapterService.REQ_BT_ENABLE)_ 不能解决问题,因为** onActivityResult **在测试上下文中是未知的。所以也许你的意思是 ** mActivity.onActivityResult(1,1,新的意图(BluetoothAdapter.ACTION_REQUEST_ENABLE)); ** 但要使用此我需要删除受保护的声明,然后它仍然无法正常工作。 – user2955547

+0

当然你可以制作公共功能,它会调用受保护的方法。但是这对测试课来说已经很多了。我正在写一个答案,如何用单元测试来做到这一点。我没有太多的仪器测试经验 –

+0

好的。我也可以在单元测试下尝试。我会尽快报告。 – user2955547