アラーム マネージャーpending intents
に追加するコードをテストできるようにしたいのですが、独自のコードを作成して返すことはできますが、プライベート コンストラクターがあるため、アラーム マネージャーの独自のサブクラスを作成できません。mock context
getSystemService()
テスト前の条件に基づいて、コードが正しくアラームを追加している (または追加していない) ことをテストできる別の (より良い?) 方法はありますか?
アラーム マネージャーpending intents
に追加するコードをテストできるようにしたいのですが、独自のコードを作成して返すことはできますが、プライベート コンストラクターがあるため、アラーム マネージャーの独自のサブクラスを作成できません。mock context
getSystemService()
テスト前の条件に基づいて、コードが正しくアラームを追加している (または追加していない) ことをテストできる別の (より良い?) 方法はありますか?
私が考えることができる2つのことが役立つかもしれません:
アラームが手動でスケジュールされていることを確認するため
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);
}
}