Lo único que he visto hasta ahora es que alguien publique un ejemplo de probar un TypedActor. Supongo que no hay forma de probar a un UntypedActor a través de decir Junit? Los documentos de Akka están mejorando día a día, pero no veo las pruebas mencionadas. ¿Es realmente obvio y me estoy perdiendo algo?¿Cómo probamos actores en Java?
Respuesta
Para las pruebas con JUnit que necesita para utilizar las facilidades proporcionadas por JUnit, la documentación sobre las pruebas Actor (equiv Java es UntypedActor) está aquí: http://akka.io/docs/akka/snapshot/scala/testing.html
¿Funciona con Java? Lo he intentado, pero parece que no puedo entender cómo usarlo con Java. – chaostheory
No, no funciona con Java. Si necesita usar JUnit, necesitará usar la API de JUnit. –
Es posible, al menos con la versión 1.3 y 2.0 y la biblioteca akka-testkit.
haces algo como esto a la configuración de su agente:
@Before
public void initActor() {
actorSystem = ActorSystem.apply();
actorRef = TestActorRef.apply(new AbstractFunction0() {
@Override
public Pi.Worker apply() {
return new Pi.Worker();
}
}, actorSystem);
}
A continuación, puede utilizar la clase TestProbe para poner a prueba tu actor (para la versión 1.3 es ligeramente diferente):
@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);
}
Hay está más disponible en un blogpost que escribí sobre algunas de mis experiencias: http://fhopf.blogspot.com/2012/03/testing-akka-actors-from-java.html
Puede que le interese una publicación de blog que he escrito: Testing AKKA actors with Mockito and FEST-Reflect El ejemplo que estoy usando se basa en JUnit, Mockito y FEST-Reflect. Avíseme si eso es útil para usted.
- 1. ¿Cómo probamos nuestra UI de Java?
- 2. cómo hacer actores (erlang) en java?
- 3. Actores en Clojure
- 4. ¿Actores dormidos?
- 5. Acciones de Actores en libgdx
- 6. actores Scala: recibir vs reaccionar
- 7. ¿Cómo prevenir la inanición de los actores en presencia de otros actores veteranos?
- 8. ¿Cómo limitar la concurrencia al usar actores en Scala?
- 9. Pruebas unitarias Scala actores
- 10. Mónadas y actores
- 11. Descubrimiento de actores Akka en el clúster
- 12. Usar actores para explotar núcleos
- 13. Cómo designar un grupo de subprocesos para actores
- 14. ¿Cómo funcionan los actores en comparación con los hilos?
- 15. Colecciones paralelas en Scala 2.9 y actores
- 16. pykka - ¿Los actores son lentos?
- 17. actores con semántica estilo daemon
- 18. ¿Qué frameworks basados en actores están disponibles para Scala?
- 19. Scala: ¿Por qué los actores son livianos?
- 20. Escribo aplicaciones con actores de Scala en la práctica
- 21. Scala Actores: comportamiento diferente en JRE 1.5 y 1.6
- 22. ¿Ejecutas tareas vinculadas a la CPU con actores de Scala?
- 23. Actores: Cómo manejar eficientemente los datos de lectura mayoritaria
- 24. ¿Cómo explicarías los actores a un no programador?
- 25. ¿Tiene sentido usar un grupo de Actores?
- 26. Cuándo usar actores locales vs remotos?
- 27. comprensión del enhebrado de los actores en scala
- 28. terminan correctamente los actores de Akka en scala
- 29. Akka y el estado entre los actores en el clúster
- 30. Interactuando con actores en aplicaciones de escalamiento de voz
Corrígeme si me equivoco pero no necesitaría probar un Actor directamente si todo lo que hace es llamar a un método en otra clase que implementa la lógica: MyActor extends UntypedACtor {onCall (Object o) {new MyBusinessRule().hacer(); }} Por lo tanto, al probar el Actor estaría probando AKKA y no su lógica. – Eldelshell