public void testRun() throws Exception { // Expect service data calls TripStatistics stats = new TripStatistics(); // Expect announcement building call expect(mockTask.getAnnouncement(same(stats))).andStubReturn(ANNOUNCEMENT); // Put task in "ready" state startTask(TextToSpeech.SUCCESS); expect(tts.isLanguageAvailable(DEFAULT_LOCALE)).andStubReturn(TextToSpeech.LANG_AVAILABLE); expect(tts.setLanguage(DEFAULT_LOCALE)).andReturn(TextToSpeech.LANG_AVAILABLE); expect(tts.setSpeechRate(AnnouncementPeriodicTask.TTS_SPEECH_RATE)) .andReturn(TextToSpeech.SUCCESS); expect(tts.setOnUtteranceCompletedListener((OnUtteranceCompletedListener) EasyMock.anyObject())) .andReturn(0); // Expect actual announcement call expect( tts.speak( eq(ANNOUNCEMENT), eq(TextToSpeech.QUEUE_FLUSH), eq(AnnouncementPeriodicTask.SPEECH_PARAMS))) .andReturn(0); // Run the announcement AndroidMock.replay(tts); task.announce(stats); AndroidMock.verify(mockTask, tts); }