¿Cómo puedo crear el caso de prueba JUnit de Android que prueba el contenido de una intención generada dentro de una actividad?¿Cómo puedo probar la unidad una intención lanzada/enviada desde una actividad?
Tengo una actividad que contiene una ventana EditText, y cuando el usuario ha terminado de ingresar los datos requeridos, la actividad inicia un IntentService que registra los datos y continúa con el proceso de la aplicación. Aquí está la clase quiero poner a prueba, la OnEditorActionListener/PasscodeEditorListener se crea como una clase separada:
public class PasscodeActivity extends BaseActivity {
EditText m_textEntry = null;
PasscodeEditorListener m_passcodeEditorListener = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.passcode_activity);
m_passcodeEditorListener = new PasscodeEditorListener();
m_textEntry = (EditText) findViewById(R.id.passcode_activity_edit_text);
m_textEntry.setTag(this);
m_textEntry.setOnEditorActionListener(m_passcodeEditorListener);
}
@Override
protected void onPause() {
super.onPause();
/*
* If we're covered for any reason during the passcode entry,
* exit the activity AND the application...
*/
Intent finishApp = new Intent(this, CoreService.class);
finishApp.setAction(AppConstants.INTENT_ACTION_ACTIVITY_REQUESTS_SERVICE_STOP);
startService(finishApp);
finish();
}
}
class PasscodeEditorListener implements OnEditorActionListener{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
PasscodeActivity activity = (PasscodeActivity) v.getTag();
boolean imeSaysGo = ((actionId & EditorInfo.IME_ACTION_DONE)!=0)?true:false;
boolean keycodeSaysGo = ((null != event) &&
(KeyEvent.ACTION_DOWN == event.getAction()) &&
(event.getKeyCode() == KeyEvent.KEYCODE_ENTER))?true:false;
if (imeSaysGo || keycodeSaysGo){
CharSequence seq = v.getText();
Intent guidEntry = new Intent(activity, CoreService.class);
guidEntry.setAction(AppConstants.INTENT_ACTION_PASSCODE_INPUT);
guidEntry.putExtra(AppConstants.EXTRA_KEY_GUID, seq.toString());
activity.startService(guidEntry);
return true;
}
return false;
}
}
¿Cómo puedo interceptar las dos posibles Intentos salientes generados por la actividad y verificar su contenido?
Gracias
¿Estás usando el simulater? Tal vez me estoy perdiendo algo, pero ¿no puedes probarlo de esa manera? – Nick
He estado usando tanto el simulador como el teléfono, aunque no creo que deba haber una diferencia. He visto varias formas de inyectar Intents en cualquier Actividad en particular bajo prueba, pero no muchas maneras de ver el resultado. Vimos otra publicación donde configuraron ContextWrapper e interceptaron la llamada a "startService()". Esto funciona para la primera llamada, pero no para llamadas posteriores. Una actividad puede lanzar múltiples intentos sin cerrar, estoy interesado en verlos/probarlos todos. –