2011-05-11 24 views
6

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?

+1

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

Respuesta

5

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

+0

¿Funciona con Java? Lo he intentado, pero parece que no puedo entender cómo usarlo con Java. – chaostheory

+0

No, no funciona con Java. Si necesita usar JUnit, necesitará usar la API de JUnit. –

1

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

Cuestiones relacionadas