Fix up the unit tests for the CallDetailActivity.
- We've recently moved lots of code to use AsyncTask to avoid strict mode violations. - Thanks to the new BackgroundTaskService, these weren't being executed, and the tests were failing. But simply executing them is not a fix, we want much finer grained control over what executes when, so we can assert about different states of the ui. - This cl introduces the concept of an identifier to go with the submitted task, so that you can uniquely identify tasks from the test. Additionally, on further reflection, adding a new interface BackgroundTask wasn't necessarily a great idea. Nor was calling the thing that submits them a Service - that name is already overloaded to mean something else in Android. Therefore this cl makes a number of other style changes to the pattern: - The BackgroundTaskService just becomes an interface AsyncTaskExecutor, with a single submit() method, in a very similar fashion to the Executor pattern in java.util.concurrent. - We introduce the AsyncTaskExecutors class, which may be used to create AsyncTaskExecutor objects, and also introduces a seam for injecting fake executors for testing. - This cl introduces a FakeAsyncTaskExecutor, which can be used to inspect the tasks that have been submitted, as well as being used to execute them in a controlled manner between assertions. - This is now being used to control the flow of voicemail fetching from the unit tests, and make sure that the recently implemented logic to read has content, move to buffering state, then move to preparing, is all working correctly. - Later this will also be used to exhaustively test all the other situations we care about. Change-Id: Ia75df4996f9a5168db8d9f39560b62ccf4b98b46
Loading
Please register or sign in to comment