2013-11-22 3 views
2

Я пытаюсь решить проблему с помощью следующего кода, который я должен проверить: Я использую Mockito и Robotium для решения большинства тестовых ящиков. Проблема заключается в том, чтобы дразнить ответ от пользователя с помощью диалога запроса запускается с помощью:Как Mock 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 я не могу Acces кнопки на

solo.clickOnText("No"); 

это также можно вставить запрос в другой класс и вызовите меня это для этого? Чтобы я мог повторно использовать запрос разными способами? Я попробовал это, но потом у меня возникла проблема, когда ни один запрос не появился, и я получаю исключение.

Я не программист-инсайдер, и я начал знакомство с этой темой. Буду признателен за каждую помощь.

+0

Что вы собираетесь делать с адаптером Bluetooth? – maszter

+0

В зависимости от состояния Bluetooth пользователь получает указанный выше User-Dialog для активации BT. Он начинается с намерения. Когда я получу это диалоговое окно, я хочу, чтобы можно было включить или выключить функцию обратного вызова. Возможно, с Robotium есть более простой способ, но до сих пор я не нашел, чтобы получить этот специальный диалог и его кнопки. – user2955547

+0

, так что вы просто включаете/выключаете Bluetooth? – maszter

ответ

1

Я не знаю, какова цель ваших испытаний. Что касается меня, похоже, что вы хотите быть уверенным, что ваш код правильно обрабатывает ответ пользователя.

Так что для меня достаточно просто позвонить onActivityResult(1,BluetoothAdapterService.REQ_BT_ENABLE) и проверить, что Bluetooth включен.

+0

Просто для выполнения _onActivityResult (1, BluetoothAdapterService.REQ_BT_ENABLE) _ не решает проблему, потому что ** onActivityResult ** неизвестен в тестовом контексте. Так что, может быть, вы имеете в виду ** mActivity.onActivityResult (1, 1, новый Intent (BluetoothAdapter.ACTION_REQUEST_ENABLE)); ** , но для этого мне нужно удалить защищенную декларацию, а затем она по-прежнему не работает. – user2955547

+0

Конечно, вы можете сделать публичную функцию, которая вызовет защищенный метод. Но это уже много всего для тестового класса. Я писал ответ в подходе, как это сделать с модульными тестами. У меня нет большого опыта в инструментальных тестах –

+0

Хорошо. Я также могу попробовать его под единичным тестом. Я дам доклад как можно скорее. – user2955547