J'essaie de tester certains acteurs en utilisant les spécifications de Scala. Je lance le test dans IDEA ou Maven (comme junit) et il ne se termine pas. En regardant le code, mon test s'est terminé, mais certains threads internes (scheduler) sont en attente. Comment puis-je faire en sorte que le test se termine ?
Réponse
Trop de publicités?Actuellement, cela n'est possible qu'en provoquant l'arrêt forcé de l'ordonnanceur de l'actor framework :
scala.actors.Scheduler.impl.shutdown
Cependant, l'implémentation sous-jacente du planificateur a été modifiée dans les mises à jour de patchs récemment, donc cela peut être différent, ou ne pas fonctionner avec la version sur laquelle vous êtes. Dans 2.7.7 le planificateur par défaut semble être une instance de scala.actors.FJTaskScheduler2
pour lesquels cette approche devrait fonctionner, mais si vous vous retrouvez avec une SingleThreadedScheduler
il ne le fera pas, car le shutdown
est une méthode sans effet
Cela ne fonctionnera que si vos acteurs n'attendent pas un message d'alerte. react
à cette époque