Er det en måte å enhetstest ScheduledExecutorService.scheduleAtFixedRate uten å bruke Thread.sleep?

stemmer
0

Jeg vil gjerne enheten test en klasse som utfører en oppgave ved hjelp ScheduledExecutorService.scheduleAtFixedRate, og jeg kan ikke finne en måte å planlegge flere kjøringer av oppgaven i en enhet test uten å bruke Thread.sleep, som er treg og ikke så presis som jeg ønsker. Er det noen måte å passere en hånet tid referanse til byrder tjenesten eller andre løsninger for å simulere tidens gang?

Publisert på 02/12/2019 klokken 23:59
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Enhet tester bekrefte oppførselen koden din i isolasjon fra sine avhengigheter.

Implementeringer av ScheduledExecutorServiceer gitt av JVM, og derfor ikke koden din, men en avhengighet som må erstattes med en test dobbel mens enhetstesting koden din. (Det kan være en gyldig oppsett for en test som må ScheduledExecutorServicegjennomføre for å bli henrettet, men dette er ikke en enhet test da.)

Så i tilfelle du skriver en enhetstest (og ikke noen annen form for test som vil si integrasjonstester , som skjer for å være med JUnit framwork ) du bør lage en mock for ScheduledExecutorServicegrensesnitt ved hjelp av en tentamen rammeverk (som Mockito eller alike) og bekrefte at koden kaller den ønskede metoden på mock.

Å aktivere test for denne bekreftelses bør man injisere implementering av ScheduledExecutorServicegrensesnittet i kode (fortrinnsvis via konstruktør injeksjon ) og ikke har den enhet som prøves skaffe den selv, slik at man har en søm i hvilken kan man utveksle reell implementering av ScheduledExecutorServicegrensesnittet whith mock for det formål å enhetstesting.

Svarte 03/12/2019 kl. 01:29
kilden bruker

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