Sto provando a testare un'attività in Android che mostrerà una ProgressDialog e tutto funziona correttamente nell'app, tuttavia quando provo a utilizzare ActivityUnitTestCase e il test fa sì che l'attività mostri la finestra di dialogo che fallisce con questo errore:Testing dialog in ActivityUnitTestCase di Android
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRoot.setView(ViewRoot.java:429)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:178)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.view.Window$LocalWindowManager.addView(Window.java:392)
stavo guardando il problema e sembra che il metodo onCreateDialog dei miei arresti di attività quando cerchiamo di crearlo dal test, che presumo è un altro contesto, l'ho capito, però Mi chiedo se qualcuno di voi abbia avuto successo nel provare un simile scenario.
Questo è il codice del mio onCreateDialog.
public Dialog onCreateDialog(final int id)
{
Dialog dialog;
switch (id)
{
case PROGRESS_BAR:
loadingDialog = new ProgressDialog(this);
loadingDialog.setMessage("searching for product...");
loadingDialog.setIndeterminate(true);
dialog = loadingDialog;
break;
case INEXISTING_PRODUCT:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Product not found");
builder.setPositiveButton("OK", null);
dialog = builder.create();
break;
case UNAVAILABLE_SERVICE:
AlertDialog.Builder unavailableBuilder = new AlertDialog.Builder(this);
unavailableBuilder.setMessage("Service Unavailable");
unavailableBuilder.setPositiveButton("OK", null);
dialog = unavailableBuilder.create();
break;
default:
dialog = super.onCreateDialog(id);
}
return dialog;
}
Qualche idea?
Hm, non è proprio una soluzione? AITC2 viene utilizzato per implementare test end-to-end completi, non test unitari. Non vedo alcuna buona ragione per cui uno non sarebbe in grado di testare i dialoghi in un test unitario. (PS: Sto avendo lo stesso problema! Anche se uso AlertDialog.Builder, il test case si blocca in dialog.show) – Matthias
Direi che un AUTC non ha una vera 'Finestra' per collegare il' Dialog' a ; il 'Contesto' all'interno del quale è in esecuzione un test non strumentato non è reale. Posso consigliare Robotium per confermare la presenza e il contenuto dei Dialoghi, ma ciò dipende da un caso di test strumentato. –
Questo problema sta monitorando il problema con la creazione di finestre di dialogo con ActivityUnitTestCase http://code.google.com/p/android/issues/detail?id=14616 – ThomasW