我希望能够测试一些添加的代码pending intents
to the 报警管理器 http://developer.android.com/reference/android/app/AlarmManager.html但虽然我可以创建自己的mock context
返回它getSystemService()
我无法创建自己的警报管理器子类,因为它有一个私有构造函数。
是否有另一种(更好?)方法让我能够测试我的代码是否根据我的测试先决条件正确添加(或不添加)警报?
我能想到的两件事可能会有所帮助:
-
用于检查是否已手动安排警报
adb shell dumpsys alarm | grep com.your.package
要检查代码中是否设置了警报,您可以使用 Robolectricshadows http://robolectric.org/extending/。这是一个使用它的示例:http://www.multunus.com/blog/2014/03/tdd-android-using-robolectric-part-3/ 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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)