Wie kann ich einen Android JUnit-Testfall erstellen, der den Inhalt einer in einer Aktivität generierten Absicht testet?Wie kann ich einen Intent testen, der von einer Aktivität gestartet/gesendet wurde?
Ich habe eine Aktivität, die ein EditText-Fenster enthält. Wenn der Benutzer die erforderlichen Daten eingegeben hat, startet die Aktivität einen Intent zu einem IntentService, der die Daten aufzeichnet und mit dem Anwendungsprozess fortfährt. Hier wird die Klasse I testen will, der OnEditorActionListener/PasscodeEditorListener wird als separate Klasse erstellt:
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;
}
}
Wie kann ich abfangen die beide möglichen abgehenden Intents durch die Aktivität erzeugt und dessen Inhalt überprüfen?
Dank
Verwenden Sie den Simulator? Vielleicht vermisse ich etwas, aber kannst du es nicht einfach so testen? – Nick
Ich habe sowohl den Simulator als auch den Handapparat benutzt, obwohl ich nicht denke, dass es einen Unterschied geben sollte. Ich habe eine Reihe von Möglichkeiten gesehen, Intents in eine bestimmte zu testende Aktivität zu injizieren, aber nicht viele Möglichkeiten, die Ausgabe zu beobachten. Habe einen anderen Beitrag gesehen als sie den ContextWrapper gesetzt und den Aufruf von "startService()" abgefangen haben. Dies funktioniert für den ersten Anruf, nicht jedoch für nachfolgende Anrufe. Eine Aktivität kann mehrere Absichten starten, ohne sie zu schließen. Ich möchte sie alle beobachten/testen. –