Próbuję przetestować działanie w Androidzie, które pokaże ProgressDialog i wszystko działa poprawnie w aplikacji, jednak gdy spróbuję użyć ActivityUnitTestCase, a test powoduje, że działanie pokazuje okno dialogowe, to się nie uda z tego błędu:Okno dialogowe testowania w Aktywności AndroidaUnitTestCase
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)
szukałem na problem i wydaje się, że metoda onCreateDialog moich wypadków aktywności, gdy staramy się stworzyć go z testu, które zakładam, że jest inny kontekst, mam, że jednak Zastanawiam się, czy któryś z was odniósł sukces próbując takiego scenariusza.
To jest kod mojego 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;
}
Wszelkie pomysły?
Hm, to naprawdę nie jest rozwiązanie? AITC2 służy do realizacji pełnych testów end-to-end, a nie testów jednostkowych. Nie widzę żadnego dobrego powodu, dla którego nie można by przetestować dialogów w teście jednostkowym. (PS: Mam ten sam problem! Chociaż używam AlertDialog.Builder, przypadek testowy zawiesza się w dialog.show) – Matthias
Domyślam się, że AUTC nie ma prawdziwego 'okna' do dołączenia' Dialog' do ; "Kontekst", w którym uruchomiony jest test bez przyrządu, nie jest prawdziwy. Mogę polecić Robotium do potwierdzenia obecności i zawartości Dialogów, ale to zależy od oprzyrządowania testowego. –
Ten problem polega na śledzeniu problemu z tworzeniem okien dialogowych za pomocą funkcji ActivityUnitTestCase http://code.google.com/p/android/issues/detail?id=14616 – ThomasW