2011-05-11 14 views
6

Jedyne, co widziałem do tej pory, to ktoś, kto publikuje przykład testowania TypedActor. Rozumiem, że nie ma sposobu na przetestowanie UntypedActor przez powiedzmy Junit? Dokumenty Akka z dnia na dzień poprawiają się, ale nie widzę wspomnianych testów. Czy to naprawdę oczywiste i po prostu coś mi brakuje?Jak testujemy aktorów w Javie?

+1

Popraw mnie, jeśli się mylę, ale nie musisz testować aktora bezpośrednio, jeśli wszystko, co robi, to wywołanie metody na innej klasie, która implementuje logikę: MyActor rozszerza UntypedACtor {onCall (Object o) {new MyBusinessRule().zrobić(); }} Więc, testując Aktora, testujesz AKKA, a nie logikę. – Eldelshell

Odpowiedz

5

Do testowania z JUnit musisz korzystać z usług świadczonych przez JUnit, docs na testowaniu aktora (równoważnik Java jest UntypedActor) jest tutaj: http://akka.io/docs/akka/snapshot/scala/testing.html

+0

Czy to działa z Javą? Próbowałem, ale nie potrafię wymyślić, jak używać z Javą. – chaostheory

+0

Nie, to nie działa z Javą. Jeśli potrzebujesz użyć JUnit, musisz użyć interfejsu API JUnit. –

1

Jest możliwe, przynajmniej w wersji 1.3 i 2.0 oraz bibliotekę akka-testkit.

zrobić coś takiego, aby skonfigurować swój Aktor:

@Before 
public void initActor() { 
    actorSystem = ActorSystem.apply(); 
    actorRef = TestActorRef.apply(new AbstractFunction0() { 

     @Override 
     public Pi.Worker apply() { 
      return new Pi.Worker(); 
     } 

    }, actorSystem); 
} 

Następnie można użyć klasy TestProbe przetestować aktora (dla wersji 1.3 jest nieco inna):

@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); 
} 

Nie jest bardziej dostępny na blogu, który napisałem o moich doświadczeniach: http://fhopf.blogspot.com/2012/03/testing-akka-actors-from-java.html

Powiązane problemy