La seule chose que j'ai vue jusqu'ici est quelqu'un qui publie un exemple de test d'un TypedActor. Je suppose qu'il n'y a aucun moyen de tester un UntypedActor par le biais de Junit? Les docs Akka s'améliorent de jour en jour, mais je ne vois pas les tests mentionnés. Est-ce vraiment évident et je manque juste quelque chose?Comment testons-nous Actors en Java?
Répondre
Pour les tests avec JUnit, vous aurez besoin d'utiliser les installations fournies par JUnit, la documentation sur les tests Acteur (Java equiv est UntypedActor) est ici: http://akka.io/docs/akka/snapshot/scala/testing.html
Est-ce que cela fonctionne avec Java? J'ai essayé, mais je n'arrive pas à comprendre comment utiliser Java. – chaostheory
Non, cela ne fonctionne pas avec Java. Si vous devez utiliser JUnit, vous devez utiliser l'API JUnit. –
Il est possible, au moins avec la version 1.3 et 2.0 et la bibliothèque akka-testkit.
Vous faites quelque chose comme ceci pour configurer votre acteur:
@Before
public void initActor() {
actorSystem = ActorSystem.apply();
actorRef = TestActorRef.apply(new AbstractFunction0() {
@Override
public Pi.Worker apply() {
return new Pi.Worker();
}
}, actorSystem);
}
Vous pouvez alors utiliser la classe TESTPOINTE DE TOUCHE pour tester votre acteur (pour la version 1.3, il est légèrement différente):
@Test
public void calculatePiFor0() {
TestProbe testProbe = TestProbe.apply(actorSystem);
Pi.Work work = new Pi.Work(0, 0);
actorRef.tell(work, testProbe.ref());
testProbe.expectMsgClass(Pi.Result.class);
TestActor.Message message = testProbe.lastMessage();
Pi.Result resultMsg = (Pi.Result) message.msg();
assertEquals(0.0, resultMsg.getValue(), 0.0000000001);
}
Il est plus disponible dans un blogue que j'ai écrit sur certaines de mes expériences: http://fhopf.blogspot.com/2012/03/testing-akka-actors-from-java.html
Vous pourriez être intéressé par un article de blog que j'ai écrit: Testing AKKA actors with Mockito and FEST-Reflect L'exemple que j'utilise est basé sur JUnit, Mockito et FEST-Reflect. Faites-moi savoir si cela vous est utile.
- 1. Comment utiliser en toute sécurité les caches ThreadLocal dans Actors?
- 2. Pourquoi mon Dispatching on Actors est-il réduit à Akka?
- 3. L'application Akka Actors se bloque sous un volume élevé
- 4. Les Scala Remote Actors arrêtent le client de se terminer
- 5. Référence de modèle canonique dans le modèle de programmation Actors
- 6. Comment la boîte aux lettres (file d'attente des messages) est-elle implémentée dans Scala Actors?
- 7. Comment imprimer en Java en Java
- 8. Akka Actors échoue, VerifyError: cadres stackmap incompatibles à la cible de la branche
- 9. Comment obtenir instance de TypedActor déjà créé en java
- 10. Comment formater en Java
- 11. comment faire en java
- 12. Comment compiler un fichier .java en Java?
- 13. Symboles ou classes de cas pour envoyer des messages à Scala Actors?
- 14. Le modèle GPars actors utilise-t-il le thread utilisateur ou les threads natifs du système?
- 15. Comment sauver décimale en java
- 16. Comment intégrer Java en C#
- 17. Comment utiliser HtmlUnit en Java?
- 18. Comment utiliser libpurple en Java?
- 19. Comment faire FileFilter en Java?
- 20. Comment définir ChekBoxes en Java?
- 21. Comment comparer l'heure en java
- 22. Comment utiliser JSpeex en java
- 23. Comment échapper « \ » caractères en Java
- 24. Comment analyser WSDL en Java?
- 25. Comment utiliser SOCKS en Java?
- 26. Comment itérer ENUM en java
- 27. Comment utiliser LayerManager en Java
- 28. Comment utiliser socket en Java
- 29. Comment utiliser indexOf en Java
- 30. Comment spoof ip en java
Corrigez-moi si je me trompe mais vous n'avez pas besoin de tester directement un acteur si tout ce qu'il fait est d'appeler une méthode sur une autre classe qui implémente la logique: MyActor extends UntypedACtor {onCall (Object o) {new MyBusinessRule().faire(); }} Donc, en testant l'acteur vous testeriez AKKA et non votre logique. – Eldelshell