Best Practices for Automated Unit Testing of Asynchronous Java Code