A standard unit testing problem is how to unit test code that has a dependency on dates or times. For example a method that returns a greeting according to the time of day:
public String timeOfDayGreeting() { LocalTime now = LocalTime.now(); if (now.isBefore(LocalTime.NOON)) { return "Good morning"; } else if (now.isBefore(LocalTime.of(18, 00))) { return "Good afternoon"; } else { return "Good evening"; } }
If we were to call this method from a test fixture (say JUnit), it would return different values depending on when the test was run. This is not ideal. Unit tests should pass or fail consistently.
Here’s a simple solution for testing time based code.