Testing asynchronous systems is hard. Not only does it require handling threads, timeouts and concurrency issues, but the intent of the test code can be obscured by all these details. Awaitility is a DSL that allows you to express expectations of an asynchronous system in a concise and easy to read manner. For example:
@Test
public void updatesCustomerStatus() throws Exception {
// Publish an asynchronous event:
publishEvent(updateCustomerStatusEvent);
// Awaitility lets you wait until the asynchronous operation completes:
await().atMost(5, SECONDS).until(customerStatusIsUpdated());
...
}
- 2017-04-28: Awaitility
3.0.0
is released with lots of improvements and changes to 2.0.0. See release notes and changelog for details. - 2017-04-07: Awaitility
3.0.0-rc3
is released. It allows you to specify poll thread(s) and changed the behavior ofuntilAsserted
so that lambda expressions are allowed to throw checked exceptions. See changelog for details. - 2017-03-31: Awaitility
3.0.0-rc2
is released. It fixes some bugs that were found in the previous release candidate and it includes the ability to specify the poll executor service and uses one less thread by default. See changelog for details.
- Change log
- Awaitility on Ohloh
- Mailing list for questions and support