Чтобы использовать принципы разработки, основанные на тестировании, для кода, включающего строку состояния Android, мне нужно написать тесты, которые проверяют, достигнуто ли ожидаемое состояние.Например, небольшой модульный тест, подобный следующему, позволил бы мне убедиться, что уведомление, которое я намеревался выставить, действительно показывает:
public class NotificationTest extends AndroidTestCase {
public void testCanNotify() {
// setup SUT
NotificationManager mgr = (NotificationManager) getContext().getSystemService(
Context.NOTIFICATION_SERVICE);
Notification notif = new Notification(android.R.drawable.stat_notify_error, "ticker", 0);
PendingIntent intent = PendingIntent.getActivity(getContext(), 0, null, 0);
notif.setLatestEventInfo(getContext().getApplicationContext(), "title", "text", intent);
int id = 123;
// exercise SUT
mgr.notify(id, notif);
// verify result
// QUESTION: HERE I WOULD LIKE TO SAY:
// assertTrue(mgr.isShowing(id));
// teardown
mgr.cancel(id);
}
}
Так, как показывает пример, сам менеджер уведомлений, похоже, неесть какие-либо диагностические методы, такие как isShowing(id)
или get(id)
, которые я мог бы использовать для шага "проверки" в тесте.
Я посмотрел на превосходный инструментарий Robotium, но они очень специфичны в тестированииодно приложение, поэтому они не покрывают уведомления.
Кто-нибудь знает решение?