Created
January 15, 2016 02:32
-
-
Save deskid/3d83296c5a70e09fce65 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* This demonstrates how to test AsyncTasks in android JUnit. Below I used | |
* an in line implementation of a asyncTask, but in real life you would want | |
* to replace that with some task in your application. | |
* @throws Throwable | |
*/ | |
public void testSomeAsynTask () throws Throwable { | |
// create a signal to let us know when our task is done. | |
final CountDownLatch signal = new CountDownLatch(1); | |
/* Just create an in line implementation of an asynctask. Note this | |
* would normally not be done, and is just here for completeness. | |
* You would just use the task you want to unit test in your project. | |
*/ | |
final AsyncTask<String, Void, String> myTask = new AsyncTask<String, Void, String>() { | |
@Override | |
protected String doInBackground(String... arg0) { | |
//Do something meaningful. | |
return "something happened!"; | |
} | |
@Override | |
protected void onPostExecute(String result) { | |
super.onPostExecute(result); | |
/* This is the key, normally you would use some type of listener | |
* to notify your activity that the async call was finished. | |
* | |
* In your test method you would subscribe to that and signal | |
* from there instead. | |
*/ | |
signal.countDown(); | |
} | |
}; | |
// Execute the async task on the UI thread! THIS IS KEY! | |
runTestOnUiThread(new Runnable() { | |
@Override | |
public void run() { | |
myTask.execute("Do something"); | |
} | |
}); | |
/* The testing thread will wait here until the UI thread releases it | |
* above with the countDown() or 30 seconds passes and it times out. | |
*/ | |
signal.await(30, TimeUnit.SECONDS); | |
// The task is done, and now you can assert some things! | |
assertTrue("Happiness", true); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment