Puede hacerlo escribiendo una actividad especial cuyo único propósito es comenzar la actividad que está probando para el resultado y guardar el resultado para que confirme la corrección.
Por ejemplo, puede crear una actividad llamada ResultReceiverActivity
. Proporcione tres métodos: getResultCode
, getResultData
y getReceivedRequestCode
, que se pueden usar para verificar que la actividad evaluada arrojó los valores correctos. Creará un caso de prueba que se extiende a ActivityInstrumentationTestCase2
y el parámetro genérico sería ResultReceiverActivity
. Si llama al getActivity
obtendrá la instancia de la actividad.
public class ReturnedResultTest
extends ActivityInstrumentationTestCase2<ResultReceiverActivity> {
public void testReturnedResult() {
ResultReceiverActivity a = getActivity();
assertEquals(Activity.RESULT_OK, a.getResultCode());
assertEquals("myResult", a.getResultData().getStringExtra("test"));
assertEquals(0x9999, a.getReceivedRequestCode());
}
}
ResultReceiverActivity
tiene que anular onActivityResult
, por supuesto, y sólo debe almacenar los valores de ese parámetro métodos en sus campos, así:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.receivedRequestCode = requestCode;
this.resultCode = resultCode;
this.resultData = data;
}
Por supuesto, es posible que desee personalizar la actividad que ResultReceiverActivity
se inicia, y puede hacerlo fácilmente usando getIntent
en su método onCreate
. En su caso de prueba, llame a setActivityIntent antes de llamar a getActivity para establecer qué intención se utiliza para iniciar la actividad.
http://stackoverflow.com/questions/4160755/testing-that-an-activity-called-setresult –
Sí, pregunta similar . Lo vi antes de preguntar, pero no hubo una buena respuesta. Comenzó uno nuevo con un código ... – uvesten
Dado que no puede cambiar la implementación de 'setResult (int)' y por lo tanto debe confiar en que funciona, ¿no sería suficiente simplemente verificar que el método fue llamado en su ¿Actividad actual? ' –