Hej
Z okazji nadmiaru czasu w końcu zabrałem się za realizacje jednego z moich pomysłów i napisać pierwszą wersje (właściwie to coś na kształt PoCa) biblioteki, która dodaje pewnego rodzaje abstrakcje na rzeczy związane z czasem. Jako, że nigdy nie miałem za bardzo umiejętności marketingowych to pokrótce o co chodzi (pełen opis jest w readme na gihubie):
Haste dostarcza interface
public interface TimeService {
LocalDateTime now();
ScheduledFuture schedule(Runnable runnable, long delay, TimeUnit timeUnit);
}
z dwoma implementacjami:
-'produkcyjna': działa normalnie w oparciu o systemowy Clock i javowy Scheduler
-'testowa': możliwość dowolnego ustawienia FixedClocka oraz przesuwania czasu w przód (co ważne, przesunięcie czasu odpali wszystkie zaplanowane w międzyczasie zadania)
Pełen opis wraz z przykładami:
https://github.com/krasnoludkolo/haste
Zdaje sobie sprawę, że jest to dopiero pierwsza pre-wersja i nie zawiera za dużo rzeczy. Chodzi mi póki co o jakąś walidację pomysłu przez innych i ewentualne opinie/sugestie, bo plany na przyszłość są ;)
Po co to komu, skoro i tak testuje klasy jednostkowo?
No własnie nie jestem zbytnio fanem tego typu testów. Wole postawić cały system/moduł (maksymalnie bez używania mocków) na czas testu i operować na działającym systemie. Nie wszystkie rzeczy da się wtedy ładnie przetestować (często właśnie rzeczy związanych z czasem, po prostu nie chce się czekać)