В основном то, что вы делаете в тесте, это фальсификация событий часов. Как именно это зависит в некоторой степени от дизайна и от того, как вы ожидаете событие, но для простоты (если не чисто), мой подход заключается в том, чтобы иметь метод, который вызывается при срабатывании временного события, а затем тестировать обе стороны этого.
Сначала нужно проверить вызов метода и убедиться, что синхронизированное событие выполняет то, что вы ожидаете. Затем смоделируйте этот класс (с помощью JMock предпочтительный способ - сделать его интерфейсом и заставить вызывающий метод реализовать этот интерфейс).
Затем вы передаете макет классу, который обрабатывает время. Здесь снова я бы абстрагировался от проблем с потоками / триггерами (таких как проверка системных часов и запуск потока) и имел бы ложные возвращаемые значения, которые по сути запускают событие сразу.
Затем сохраните реальный код, который фактически читает системные часы и запускает поток как можно меньшего размера, и это будет область, которая не подвергается модульному тестированию.