Thread.Sleep kullanmadan birim test ScheduledExecutorService.scheduleAtFixedRate için bir yol var mı?

oy
0

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ı?

Oluştur 02/12/2019 saat 23:59
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

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.

Cevap 03/12/2019 saat 01:29
kaynak kullanıcı

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