Scala Aktörünün çıkışını nasıl beklerim()? Bir birim testinde iki Aktör kurdum ve başlamasına yardımcı olmak için birkaç mesaj yolluyorum. Birkaç iletiyi ileri ve geri gönderirler ve sonunda ikisi de exit() çağırır. Birim testimi hem Aktörlerin geçmeden önce bitirmesi için nasıl beklerim? Önceden biliyorsanızBir Aktörün çıkmasını bekleyin()
cevap
mesajların sayısı aktörleri arasında, mesajların sayısı izlemek için bir java.util.concurrent.CountDownLatch
kullanabilirsiniz alışverişinde bulundu. aktörler olarak, iletinin her işlem sonrasında,
latch.countDown()
ve ana iş parçacığı
mandalın sayım sıfıra olduğu kadar ana iş parçacığı bekleme yapacaklatch.await()
Bu
do. Önceden mesajların sayısını biliyorum ama bitirmek gösteren bir durumun yoksa, o zaman java.util.concurrent.locks.Condition
kullanabilirsiniz. Durumunuz memnun olduğunda aktörler olarak,
if (conditionSatisfied)
condition.signal()
ve ana iş parçacığı
koşul yerine getirildiğinde kadar bekleyebilir yapmakwhile (!conditionSatisfied)
condition.await()
do.
detaylar için CountDownLatch
ve Condition
ait javadocs bakın.
Condition
kullanılarak örneğin this Gist bakınız.
Spesifikasyonlarda Eventually Matchers'u kullanabilirsiniz. Eğer aktör son aşamasına veya herhangi bir kuruluş biliyorsanız (diyelim ki, kalıcılık deposu) Bu duruma geçiş meydana gelecektir kadar, beklemek testi zorlayabilir, değiştirir:
<entity state> must eventually(10, 1.second)(be(<state>)) // there will be 10 retires every second, and if the state will be different, exception is thrown
Bu, ünitenin test edilmesinin saniyenin onda birini almasını sağlar ki bu da çok yavaştır. –
- 1. akka: Bir aktörün durdurulduğunu test etme
- 2. bekleyin: Java
- 3. Masaüstünde Aktörün Sahne Alanı koordinatlarını alma libGDX
- 4. Sprey güzergahında bir Aktör çağırmak ve Aktörün yanıtını beklemek
- 5. Konsolun Eclipse'de otomatik olarak çıkmasını nasıl engellersiniz
- 6. UITableview'ın alt kısmının klavyeyle yukarı çıkmasını sağlayın
- 7. Yazılım klavyesinin nasıl ortaya çıkmasını önleyebilirim?
- 8. Doxygen korumalı elemanların çıkmasını önlemek mümkün mü?
- 9. Java Gecikmesi/Bekleyin
- 10. Wget yüklemeleri arasında bekleyin
- 11. Döngünün bitmesini bekleyin
- 12. "Son" olayın tetiklenmesini bekleyin
- 13. Komutların Sonlanmasını Bekleyin
- 14. ThreadLocal ve bekleyin
- 15. FutureTask'ta iptal() için bekleyin
- 16. bekleyin kadar Swift/IOS
- 17. C# Selenyum Örtülü bekleyin
- 18. Uygulamadaki Olayı Bekleyin
- 19. Açıölçer bekleyin komut
- 20. Çok satırlı bir TextView'ın gereksiz genişlikten maksimum genişliğe çıkmasını önleyin
- 21. DocBook XSL: HTML nesnesinin bir başlık özniteliği çıkmasını nasıl engellerim?
- 22. Bir Windows Batch dosyasının erken çıkmasını nasıl engellersiniz?
- 23. Bir datagrid denetimini doldururken iletiyi bekleyin
- 24. HTML öğelerinin bir sınıf almasını bekleyin ve
- 25. Monit bir dosya işlemin başlamasını bekleyin.
- 26. android wifi bağlanana kadar bekleyin
- 27. Selenium WebDriver JS - Açık Bekleyin
- 28. WebBrowser.Print() tamamlanana kadar bekleyin. .NET
- 29. wkhtmltopdf yazdırmadan önce durumu bekleyin
- 30. 20 millisec için doğru bekleyin
Ben hemen önce geri sayım() olabilir exit() ve sadece 1'e kadar sayın. Bu iki yöntem her zaman birlikte çağrılacağı için gereksiz görünüyor. –
Anlamadım. Ana iş parçacığının aktörler bitene kadar beklemesini istiyorsun, değil mi? 'Bekle() 'çağrılarının yapacağı şey budur. –
Üretim kodu (aktörler) için bir JUnit testi (Oyuncuları beklerken) için bir mandal veya durum eklemem gerekiyor. –