<dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-testkit_2.13</artifactId> <version>2.6.16</version> <scope>test</scope> </dependency> ActorSystem system = ActorSystem.create(); ActorRef testedActor = system.actorOf(Props.create(MyActor.class)); TestProbe probe = new TestProbe(system); testedActor.tell(new MyMessage(), probe.ref()); probe.expectMsgClass(TimeoutException.class); import akka.actor.AbstractActor; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.testkit.javadsl.TestKit; import akka.testkit.javadsl.TestProbe; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import scala.concurrent.duration.Duration; import java.util.concurrent.TimeUnit; public class ExceptionHandlingTest { static ActorSystem system; @BeforeClass public static void setup() { system = ActorSystem.create(); } @AfterClass public static void teardown() { TestKit.shutdownActorSystem(system); system = null; } @Test public void testExceptionHandling() { new TestKit(system) {{ final Props props = Props.create(MyActor.class); final ActorRef testedActor = system.actorOf(props); final TestProbe probe = new TestProbe(system); testedActor.tell(new MyMessage(), probe.ref()); probe.expectMsgClass(Duration.create(1, TimeUnit.SECONDS), TimeoutException.class); }}; } static class MyActor extends AbstractActor { @Override public Receive createReceive() { return receiveBuilder() .match(MyMessage.class, this::handleMessage) .build(); } private void handleMessage(MyMessage message) { throw new TimeoutException("Timeout occurred"); } } static class MyMessage {} }


上一篇:
下一篇:
切换中文