我希望能够测试一些将pending intents
添加到Alarm Manager的代码,但我可以创建自己的mock context
以从getSystemService()
返回{I}我可以&# 39;创建我自己的Alarm Manager子类,因为它有一个私有构造函数。
我是否还有另一种(更好的?)方式能够根据我的测试前提条件测试我的代码是否正确添加(或不添加)警报?
答案 0 :(得分:12)
我能想到的两件事可能有所帮助:
用于检查警报已手动安排
adb shell dumpsys alarm | grep com.your.package
用于检查代码中是否设置了警报,您可以使用Robolectric shadows。以下是使用它的示例:http://www.multunus.com/blog/2014/03/tdd-android-using-robolectric-part-3/
你可以使用(来自文章):
@RunWith(RobolectricTestRunner.class)
public class ResetAlarmTest {
ShadowAlarmManager shadowAlarmManager;
AlarmManager alarmManager;
@Before
public void setUp() {
alarmManager = (AlarmManager) Robolectric.application.getSystemService(Context.ALARM_SERVICE);
shadowAlarmManager = Robolectric.shadowOf(alarmManager);
}
@Test
public void start_shouldSetRepeatedAlarmWithAlarmManager() {
Assert.assertNull(shadowAlarmManager.getNextScheduledAlarm());
new ResetAlarm(Robolectric.application.getApplicationContext());
ScheduledAlarm repeatingAlarm = shadowAlarmManager.getNextScheduledAlarm();
Assert.assertNotNull(repeatingAlarm);
}
}