gpt4 book ai didi

android - 使用单元测试测试通知

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:29 24 4
gpt4 key购买 nike

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

因此,我试图将其分解为调用我的 BroadcastReceiver 并拦截我触发通知的那个点。所以那时我可以检查通知是否包含我期望的所有设置。我不得不希望它会按预期呈现:-)

在我的 build.gradle 中,我添加了这个 block :

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 将无法工作。

我现在可以做什么?

最佳答案

我现在的解决方案是模拟如下 Intent :

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

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

关于android - 使用单元测试测试通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708831/

24 4 0
文章推荐: java - 高清设备上 2D android/java 游戏中的错误 FPS
文章推荐: c# - 无法将类型 'System.EventHandler' 隐式转换为 'System.EventHandler'