W jaki sposób mogę utworzyć przypadek testowy JUnit Androida, który testuje treść intencji wygenerowanej w ramach działania?W jaki sposób mogę przetestować intencję uruchomioną/wysłaną z działania?
Mam działanie, które zawiera okno EditText, a po zakończeniu wprowadzania wymaganych danych, Aktywność uruchamia Intent do IntentService, która rejestruje dane i kontynuuje proces aplikacji. Tutaj jest klasa chcę przetestować The OnEditorActionListener/PasscodeEditorListener jest tworzony jako osobnej klasy:
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;
}
}
Jak mogę przechwycić dwa możliwe intencjami wychodzące generowane przez działalność i sprawdzić ich zawartość?
Dzięki
Czy używasz symulatora? Może czegoś mi brakuje, ale czy nie możesz tego tak przetestować? – Nick
Używam zarówno symulatora, jak i słuchawki, chociaż nie sądzę, że powinna istnieć jakakolwiek różnica. Widziałem wiele sposobów na wstrzyknięcie Intents do jakiejkolwiek konkretnej aktywności w trakcie testu, ale nie wiele sposobów oglądania wyników. Widziałem inny post, gdy ustawili ContextWrapper i przechwycili wywołanie funkcji "startService()". Działa to dla pierwszego połączenia, ale nie dla kolejnych połączeń. Działanie może uruchomić wiele intencji bez zamykania, jestem zainteresowany oglądaniem/testowaniem ich wszystkich. –