创build一个模拟的AlarmManager进行testing

我想能够testing一些代码,添加pending intents到警报pipe理器,但是我可以创build自己的mock contextgetSystemService()返回它我不能创build我自己的报警pipe理器的子类,因为它有一个私人构造函数。

会有另一个(更好的?)的方式,让我能够testing我的代码正确地添加(或不)基于我的testing前提条件的警报?

Solutions Collecting From Web of "创build一个模拟的AlarmManager进行testing"

我能想到的两件事可能会有所帮助:

  1. 用于检查警报是否已经手动安排

    adb shell dumpsys alarm | grep com.your.package

  2. 用于检查是否有代码中设置的警报,您可以使用Robolectric 阴影 。 这是一个使用它的例子: 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); } }