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() {
// Publish an asynchronous message to a broker (e.g. RabbitMQ):
messageBroker.publishMessage(updateCustomerStatusMessage);
// Awaitility lets you wait until the asynchronous operation completes:
await().atMost(5, SECONDS).until(customerStatusIsUpdated());
...
}
See getting starting and usage guide for more info.
News
News
- 2024-08-07: Awaitility
4.2.2
is released with support for “ea” JVM versions. See changelog for details. - 2024-03-15: Awaitility
4.2.1
is released. It allows for easier use of logging and some bug fixes and improvements. See changelog for details. - 2022-03-04: Awaitility
4.2.0
is released. It allows the use of assertion libaries such as Hamcrest or Assertj in fail-fast conditions as well as various improvements and bug fixes. See changelog for details.
Release Notes
Docs
Documentation
Who
Who
Awaitility is developed and maintained by Johan Haleby with the help of numerous other contributors over the years. Would you like to contribute to the project in any way? Submit a pull request or contact Johan at Twitter.
Johan started the project with Jan Kronquist when they were both working at Jayway back in January of 2010. The project is now sponsored by Parkster.