Czy istnieje sposób, aby jednostka testowa ScheduledExecutorService.scheduleAtFixedRate bez użycia Thread.Sleep?

głosy
0

Chciałbym badanej jednostki klasy, która wykonuje zadania przy pomocy ScheduledExecutorService.scheduleAtFixedRate, i nie mogę znaleźć sposób na „Schedule” wielokrotnych przebiegów zadania w badanej jednostki bez użycia Thread.Sleep, który jest powolny, a nie jako precyzyjny, jak chciałbym. Czy istnieje jakiś sposób, aby zdać szydzili czasu odniesienia do usługi executora lub innych obejściach do symulacji upływu czasu?

Utwórz 02/12/2019 o 23:59
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Testy jednostkowe zweryfikować zachowanie kodu w oderwaniu od jego zależnościami.

Implementacje ScheduledExecutorServicesą dostarczane przez JVM, a zatem nie swój kod, ale zależność , która musi być zastąpiony testem podwójnej podczas test jednostkowy kod. (Nie może być ważny dla konfiguracji testu, który wymaga ScheduledExecutorServicewdrożenia do wykonania, ale nie jest to próba jednostka czasu.)

Tak więc w przypadku pisania testów jednostkowych (a nie jakiś inny rodzaj testu, co znaczy testów integracyjnych , że dzieje się za pomocą ram prac JUnit ) należy utworzyć makiety dla ScheduledExecutorServiceinterfejsu z wykorzystaniem ramy szyderczy (jak Mockito lub podobne) i upewnij się, że Twój kod wywołuje odpowiednią metodę na mock.

Aby włączyć test dla tej weryfikacji należy wstrzykiwać wdrożenie ScheduledExecutorServiceinterfejsu w kodzie (najlepiej poprzez wstrzyknięcie konstruktora ) i nie mieć swoją jednostkę badanego pozyskiwania sama, tak, że masz szew na którym można wymieniać rzeczywistą realizację ScheduledExecutorServiceinterfejsu pokojowe makiety dla celów testów jednostkowych.

Odpowiedział 03/12/2019 o 01:29
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more