使用单元测试测试通知
Testing notifications with unit tests
我有一堆带有条件的通知类型,我想自动测试它们。我现在的问题是,我知道无法生成通知并检查通知中心生成的 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
s 将无法工作。
我现在可以做什么?
我现在的解决方案是模拟如下意图:
Intent action = spy(new Intent(NotificationManager.MY_ACTION));
doReturn(NotificationManager.MY_ACTION).when(action).getAction();
但这只是一种解决方法。后来我 运行 发现 Notification.Builder()
class returns 在构建器模式中只是空值,所以这根本无法解决它。
我有一堆带有条件的通知类型,我想自动测试它们。我现在的问题是,我知道无法生成通知并检查通知中心生成的 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
s 将无法工作。
我现在可以做什么?
我现在的解决方案是模拟如下意图:
Intent action = spy(new Intent(NotificationManager.MY_ACTION));
doReturn(NotificationManager.MY_ACTION).when(action).getAction();
但这只是一种解决方法。后来我 运行 发现 Notification.Builder()
class returns 在构建器模式中只是空值,所以这根本无法解决它。