Bir Etkinlik içinde oluşturulan bir Niyetin içeriğini test eden Android JUnit test vakasını nasıl oluşturabilirim?Birim, bir Etkinlikten başlatılan/gönderilen bir Niyeti nasıl test edebilir?
Bir EditText penceresi içeren bir Etkinliğim var ve kullanıcı gerekli verileri girmeyi bitirdiğinde, Etkinlik, verileri kaydeden ve uygulama işlemiyle devam eden bir IntentService niyetini başlatır. İşte test etmek istiyorum sınıfı, OnEditorActionListener/PasscodeEditorListener ayrı sınıf olarak oluşturulur edilir:
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;
}
}
nasıl faaliyeti tarafından oluşturulan iki olası giden Amaçları yolunu kesmek ve içeriklerini doğrulayabilir?
Teşekkür
Simülatör kullanıyor musunuz? Belki bir şeyi özlüyorum ama bu şekilde test edemez misin? – Nick
Hem simülatör hem de el cihazını kullanıyorum, ancak bir fark olması gerektiğini düşünmüyorum. Intents'ı test altında herhangi bir belirli aktiviteye enjekte etmenin bir çok yolunu gördüm, ama çıktıyı izlemenin pek çok yolu yok. ContextWrapper'ı ayarladılar ve aramayı "startService()" ile kestiler. Bu ilk arama için çalışır, ancak sonraki aramalar için değil. Bir etkinlik kapanmadan birden fazla hedefi başlatabilir, hepsini izlemeye/test etmeye ilgi duyuyorum. –