Existuje způsob, jak test jednotky ScheduledExecutorService.scheduleAtFixedRate bez použití Thread.sleep?

hlasů
0

Chtěl bych jednotky test třídy, který provádí úkol pomocí ScheduledExecutorService.scheduleAtFixedRate, a nemohu najít cestu k „plánu“ více jízd úkolu v testu jednotky bez použití Thread.sleep, který je pomalý a ne jako přesné, jak bych chtěl. Existuje nějaký způsob, jak trávit čas referenci zesměšňoval ke službě vykonavatelem nebo jiných řešení simulovat plynutí času?

Položena 02/12/2019 v 23:59
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Unit testy ověřit chování kódu v izolaci od jeho závislosti.

Tyto implementace ScheduledExecutorServiceposkytuje JVM, a proto není váš kód, ale o závislost , která musí být nahrazen testem dvojitým zatímco Unit Testing svůj kód. (Tam by mohlo být platné nastavení pro test, který potřebuje k ScheduledExecutorServiceplnění, které mají být provedeny, ale nejedná se o testovací jednotky poté).

Takže v případě, že píšete test jednotky (a ne nějaký jiný druh testu jako tj testy integrace , která se stane být pomocí JUnit Dispozičního fondu ), měli byste vytvořit falešnou pro ScheduledExecutorServicerozhraní s použitím rámec posměšný (jako Mockito nebo podobně) a ověřit, že váš kód volá požadovanou metodu na Mock.

Chcete-li aktivovat svůj test tohoto ověření je třeba aplikovat implementaci ScheduledExecutorServicerozhraní do kódu (nejlépe pomocí injekce konstruktoru ) a ne mít svůj přístroj při zkoušce získání sama, takže máte šev , ve kterém si můžete vyměnit skutečné provádění ScheduledExecutorServicerozhraní whith Mock pro účely testování jednotek.

Odpovězeno 03/12/2019 v 01:29
zdroj uživatelem

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