Ben birim testine ScheduledExecutorService.scheduleAtFixedRate kullanarak bir görevi yürüten bir sınıf istiyorum ve ben yavaş değil gibidir Thread.sleep, kullanmadan bir birim test görevin zamanlama birden çok çalışır bir yolunu bulamıyor Ben istesem de kesin. zamanın geçişini taklit etmek infaz hizmet veya diğer çözümler için alay zaman referansı geçmesine herhangi bir yolu var mı?
Thread.Sleep kullanmadan birim test ScheduledExecutorService.scheduleAtFixedRate için bir yol var mı?
Birim Testleri davranışını doğrulamak için kod bağımlılıklarından yalıtılmış olarak.
Gerçeklenimcilerine
ScheduledExecutorServicekodunuzu JVM tarafından sağlanan ve bu nedenle değil, ancak bir bağımlılık bir değiştirilmelidir çift testi kodunuzu unittesting ederken. (Orada gereken bir test için geçerli bir kurulum olabilir
ScheduledExecutorServiceyürütülecek uygulama, ancak bu değil birim test sonra.)
Yani durumda bir birim testi (ve yani olarak testin diğer bazı tür yazıyoruz entegrasyon testleri kullanıyor olur, JUnit çerçevesini ) Bir oluşturmalısınız mock için
ScheduledExecutorServicebir kullanan bir arayüz alaycı çerçevesi (gibi Mockito veya benzeri) ve doğrulamak kodunuzu taklidinin istenen yöntemini çağırır.
Bu doğrulama için testini etkinleştirmek için gereken enjekte uygulanmasını
ScheduledExecutorService(tercihen aracılığıyla koduna arayüzünde yapıcı enjeksiyon ) ve değil sahip test altındaki birimi bir var ki, o kendisini edinme dikiş sen gerçek uygulanmasını alışverişi yapabilir hangi
ScheduledExecutorServicearayüzde birim testi için taklidinin whith.