使用单元测试测试通知

时间:2015-09-22 05:11:49

标签: android unit-testing notifications

我有一堆通知类型,其条件我想自动测试。我现在的问题是,我知道无法生成通知并检查通知中心生成的UI是否与预期的一样。

因此,我试图将其分解为调用我的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将无法工作。

我现在该怎么办?

1 个答案:

答案 0 :(得分:0)

我现在的解决方案是嘲笑意图如下:

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

然而,这只是一种解决方法。后来我遇到了Notification.Builder()类在构建器模式中只返回空值的问题,所以这根本不会修复它。