Effective Strategies for Testing Time-Sensitive Java Code