2015-09-22 3 views
4

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

Из-за этого я попытался сломать его до вызова моего BroadcastReceiver и перехватить тот момент, когда я запускаю уведомление. Поэтому в этот момент я могу проверить, содержит ли уведомление все настройки, которые я ожидаю. Я должен надеяться, что она будет оказана, как и ожидалось :-)

В моей build.gradle я добавил этот блок:

testOptions { 
    unitTests.returnDefaultValues = true 
} 

Здесь начинается моя проблема я создаю Intent и позвонить получателю:

@RunWith(MockitoJUnitRunner.class) 
public class NotificationTest { 
    @Mock 
    Context mMockContext; 

    @Test 
    public void firstTest() { 
     NotificationManager manager = new NotificationManager(); 
     manager.onReceive(mMockContext, new Intent(NotificationManager.MY_ACTION)); 
    } 
} 

этот код падает с NullPointerException, потому что у меня есть эта хорошая линия в моем BroadcastReceiver:

switch(intent.getAction()) { 

Я могу себе представить, что здесь происходит. Издевательский API не создает реального Intent, и мои данные ушли. Как я могу протестировать сейчас свою реализацию уведомлений? Я думаю, что PendingIntent s, которые я хочу протестировать, не будет работать простым эфиром.

Что теперь делать?

ответ

0

Мое решение сейчас издеваться намерения следующим образом:

Intent action = spy(new Intent(NotificationManager.MY_ACTION)); 
doReturn(NotificationManager.MY_ACTION).when(action).getAction(); 

Однако это лишь временное решение. Позже я столкнулся с проблемой, что класс Notification.Builder() возвращает только нули в шаблоне компоновщика, чтобы это вообще не исправить.

+0

Отметьте также построитель уведомлений и загляните в него, и убедитесь, что вы установили правильные значения вместо того, чтобы смотреть на возвращаемый объект уведомления. проверить (notifBuilder) .setContentTitle ("AAA"); – Peter