Можно ли делать уведомления в строке состояния TDD для Android? - PullRequest
0 голосов
/ 30 августа 2011

Чтобы использовать принципы разработки, основанные на тестировании, для кода, включающего строку состояния 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, но они очень специфичны в тестированииодно приложение, поэтому они не покрывают уведомления.

Кто-нибудь знает решение?

1 Ответ

3 голосов
/ 08 сентября 2011

Я бы обычно не проверял, работает ли сторонний или системный API должным образом.Я бы использовал макет NotificationManager и проверил, вызывает ли мой производственный код notify с правильными параметрами.Правильно ли ведет себя real NotificationManager. Это не то, что вы контролируете.

Если NotificationManager устойчив к насмешкам, вы можете попробовать поместить его в тонкий класс, который находится под вашим контролем.

Единственный раз, когда я тестирую сторонний или системный API, это когда он плохо документирован, и мне нужно подтвердить предположение о его поведении.Такого рода тесты обычно выбрасываются, когда у меня есть ответ.Если это так, и вам трудно тестировать с использованием тестовой среды, вы всегда можете создать простое приложение и визуально проверить результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...