2011-05-11 1 views
6

Единственное, что я видел до сих пор, - это публикация примера тестирования TypedActor. Я так понимаю, нет никакого способа проверить UntypedActor, скажем, Junit? Акка-документы улучшаются с каждым днем, но я не вижу тестирования. Это действительно очевидно, и я просто что-то упустил?Как мы тестируем актеров в Java?

+1

Исправьте меня, если я ошибаюсь, но вам не нужно будет тестировать актера напрямую, если все, что он делает, вызывает метод в другом классе, который реализует логику: MyActor extends UntypedACtor {onCall (Object o) {new MyBusinessRule().делать(); }} Итак, тестируя Актера, вы будете тестировать AKKA, а не свою логику. – Eldelshell

ответ

5

Для тестирования с помощью JUnit вы должны использовать возможности, предоставляемые JUnit, документацию на тестирование Actor (Java эквив является UntypedActor) здесь: http://akka.io/docs/akka/snapshot/scala/testing.html

+0

Работает ли он с Java? Я пробовал, но я не могу понять, как использовать с Java. – chaostheory

+0

Нет, он не работает с Java. Если вам нужно использовать JUnit, вам нужно будет использовать JUnit API. –

1

Это возможно, по крайней мере, с версией 1.3 и 2.0 и библиотека akka-testkit.

Вы делаете что-то вроде этого, чтобы настроить ваш актер:

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

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

    }, actorSystem); 
} 

Вы можете использовать класс TestProbe, чтобы протестировать актера (для версии 1.3 она немного отличается):

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

Там более доступен в блоге, который я написал по некоторым из моих опытов: http://fhopf.blogspot.com/2012/03/testing-akka-actors-from-java.html

1

Возможно, вас заинтересует запись в блоге, которую я написал: Testing AKKA actors with Mockito and FEST-Reflect Пример, который я использую, основан на JUnit, Mockito и FEST-Reflect. Дайте мне знать, если это вам полезно.

Смежные вопросы