Как мы тестируем актеров в Java? - PullRequest
6 голосов
/ 12 мая 2011

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

Ответы [ 3 ]

5 голосов
/ 12 мая 2011

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

1 голос
/ 10 сентября 2012

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

1 голос
/ 07 марта 2012

Это возможно, по крайней мере, с версиями 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

...