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?
Odpowiedz
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
Czy to działa z Javą? Próbowałem, ale nie potrafię wymyślić, jak używać z Javą. – chaostheory
Nie, to nie działa z Javą. Jeśli potrzebujesz użyć JUnit, musisz użyć interfejsu API JUnit. –
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
Być może zainteresuje Cię post na blogu, który napisałem: Testing AKKA actors with Mockito and FEST-Reflect Przykład, którego używam, bazuje na JUnit, Mockito i FEST-Reflect. Daj mi znać, jeśli to Ci się przyda.
- 1. Jak miksować aktorów i aktorów bez typu?
- 2. Jak zapobiegać głodowaniu aktorów w obecności innych długoletnich aktorów?
- 3. jak robić aktorów (erlang) w java?
- 4. Jak testujemy typ dynamiczny (rozmiar tekstu) w symulatorze iOS?
- 5. Jak uruchomić Akka aktorów w IntelliJ IDEA
- 6. Akka. Jak zilustrować aktorów w UML?
- 7. Jednostki testujące aktorów scala
- 8. Jak wyznaczyć pulę wątków dla aktorów
- 9. Począwszy od aktorów Akka w grze
- 10. Wysyłanie wiadomości od nie-aktorów w Akce
- 11. Ręczne tworzenie hierarchii aktorów w akka
- 12. Używanie aktorów Akka w aplikacji internetowej CRUD
- 13. Jaki jest koszt tworzenia aktorów w Akce?
- 14. Przekazywanie kontekstu żądania bezwarunkowo w systemie aktorów
- 15. Referencja wzorców kanonicznych w modelu programowania aktorów
- 16. Jak powinienem uporządkować Aktorów Persistence w trwałości Akka?
- 17. Przenoszenie typowej architektury trójwarstwowej na aktorów.
- 18. Konwencje nazewnictwa dla wiadomości i aktorów Akka
- 19. Czy rozsądne jest postrzeganie wysoce autonomicznych aktorów jako agentów?
- 20. Usługa internetowa na bazie aktorów - jak to zrobić właściwie?
- 21. Przejście z modelu wątku na aktorów
- 22. Kiedy używać lokalnych lub zdalnych aktorów?
- 23. Jak po prostu zatrzymać aktorów dziecięcych po ponownym uruchomieniu rodzica?
- 24. Akka zdalnych aktorów, superklasa bez domyślnego konstruktora
- 25. Używanie ScalaTest do testowania akka aktorów
- 26. jak przeciągnąć i upuścić aktorów na libgdx scene2d?
- 27. Jak "opróżnić" StringWriter w Javie?
- 28. C-jak enum w Javie
- 29. Jak normalizować URL w Javie?
- 30. Jak wejście zdanie w Javie
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