У меня проблема. Я хочу написать тест для кода, который опирается на выполнение метода PopupWindow.OnDismissListener.onDismiss(). Однако, похоже, это никогда не называется. Я делаю что-то неправильно? КодПочему PopupWindow.OnDismissListener не вызывается при использовании Robolectric?
Пример:
View content = new View(Robolectric.application);
PopupWindow popup = new PopupWindow(content, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popup.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
Assert.fail();
}
});
View anchor = new View(Robolectric.application);
popup.showAsDropDown(anchor);
popup.dismiss();
выше тест никогда не подведет! Я попытался добавить небольшой сон после того, как возникли некоторые проблемы с синхронизацией. Я просмотрел сгенерированный код для PopupWindow.class, но ничего не нашел.
Спасибо!
К сожалению, он ничего не поймал. Кроме того, не будут ли какие-либо исключения появляться при запуске кода? –
Хмм кажется, что это проблема с диспетчером окон, вместо того чтобы называть непосредственно два последних оператора вызова anchor.post (r), где r - Runnable, который вызывает эти два оператора в методе run(), как привязка, так и всплывающее окно должны быть окончательными для этого – pskink
это решило проблему? – pskink