Szeretnék egység teszt egy osztály, amely végrehajtja a feladatot ScheduledExecutorService.scheduleAtFixedRate, és nem tudok találni a módját, hogy „menetrend” több fut a feladat egy egység teszt használata nélkül Thread.sleep, ami lassú, és nem pontos, mint szeretnék. Van-e bármilyen módon, hogy átmenjen egy kigúnyolják idő hivatkozással a végrehajtó szolgálat vagy más megoldásokat szimulálni az idő múlásával?
Van egy módja annak, egység teszt ScheduledExecutorService.scheduleAtFixedRate használata nélkül Thread.sleep?
Unit tesztek ellenőrzésére viselkedését a kódot elszigetelten a függőségeket.
Az implementáció ScheduledExecutorService
biztosítunk a JVM, és ezért nem a kód, de a függőség , hogy ki kell cserélni a vizsgálat kettős míg unittesting kódot. (Lehet, hogy egy érvényes beállítás egy teszt, hogy szüksége van a ScheduledExecutorService
végrehajtás végre kell hajtani, de ez nem egy egység teszt majd.)
Tehát abban az esetben írunk egy egység teszt (és nem valamilyen más vizsgálat azaz integrációs tesztek , hogy segítségével történik, hogy a JUnit keretének ) Létre kell hozni egy ál az ScheduledExecutorService
interfész segítségével egy gúnyos keret (mint Mockito vagy más hasonló) és ellenőrizze, hogy a kódot kéri a megfelelő módszert az ál.
Annak érdekében, hogy a vizsgálat ezt az ellenőrzést kell beadni végrehajtását ScheduledExecutorService
interfészt a kódot (lehetőleg kivitelező injekció ), és nem rendelkezik a vizsgált egység azt megszerző maga úgy, hogy van egy varrás , amellyel meg lehet cserélni a tényleges végrehajtása ScheduledExecutorService
interfész látnia a modell céljára az egység tesztelése.