public class TestKit extends java.lang.Object implements TestKitBase
expectMsg...
methods. Assertions and bounds concerning
timing are available in the form of within
blocks.
class Test extends TestKit(ActorSystem()) {
try {
val test = system.actorOf(Props[SomeActor])
within (1.second) {
test ! SomeWork
expectMsg(Result1) // bounded to 1 second
expectMsg(Result2) // bounded to the remainder of the 1 second
}
} finally {
system.terminate()
}
} finally {
system.terminate()
}
}
Beware of two points:
- the ActorSystem passed into the constructor needs to be shutdown,
otherwise thread pools and memory will be leaked
- this class is not thread-safe (only one actor with one queue, one stack
of within
blocks); it is expected that the code is executed from a
constructor as shown above, which makes this a non-issue, otherwise take
care not to run tests within a single test class instance in parallel.
It should be noted that for CI servers and the like all maximum Durations are scaled using their Duration.dilated method, which uses the TestKitExtension.Settings.TestTimeFactor settable via akka.conf entry "akka.test.timefactor".
Constructor and Description |
---|
TestKit(ActorSystem _system) |
Modifier and Type | Method and Description |
---|---|
protected abstract static void |
akka$testkit$TestKitBase$_setter_$akka$testkit$TestKitBase$$queue_$eq(java.util.concurrent.LinkedBlockingDeque<TestActor.Message> x$1) |
protected abstract static void |
akka$testkit$TestKitBase$_setter_$testActor_$eq(ActorRef x$1) |
protected abstract static void |
akka$testkit$TestKitBase$_setter_$testKitSettings_$eq(TestKitSettings x$1) |
static void |
akka$testkit$TestKitBase$$end_$eq(scala.concurrent.duration.Duration x$1) |
static scala.concurrent.duration.Duration |
akka$testkit$TestKitBase$$end() |
static void |
akka$testkit$TestKitBase$$lastWasNoMsg_$eq(boolean x$1) |
static boolean |
akka$testkit$TestKitBase$$lastWasNoMsg() |
static java.util.concurrent.LinkedBlockingDeque<TestActor.Message> |
akka$testkit$TestKitBase$$queue() |
static void |
awaitAssert(scala.Function0<java.lang.Object> a,
scala.concurrent.duration.Duration max,
scala.concurrent.duration.Duration interval) |
static scala.concurrent.duration.Duration |
awaitAssert$default$2() |
static scala.concurrent.duration.Duration |
awaitAssert$default$3() |
static boolean |
awaitCond(scala.Function0<java.lang.Object> p,
scala.concurrent.duration.Duration max,
scala.concurrent.duration.Duration interval,
boolean noThrow)
Await until the given condition evaluates to
true or the timeout
expires, whichever comes first. |
static scala.concurrent.duration.Duration |
awaitCond$default$2() |
static scala.concurrent.duration.Duration |
awaitCond$default$3() |
static java.lang.String |
awaitCond$default$4() |
static ActorRef |
childActorOf(Props props) |
static ActorRef |
childActorOf(Props props,
java.lang.String name) |
static ActorRef |
childActorOf(Props props,
java.lang.String name,
SupervisorStrategy supervisorStrategy) |
static ActorRef |
childActorOf(Props props,
SupervisorStrategy supervisorStrategy) |
static <T> T |
expectMsg(scala.concurrent.duration.FiniteDuration max,
java.lang.String hint,
T obj) |
static <T> T |
expectMsg(scala.concurrent.duration.FiniteDuration max,
T obj) |
static <T> T |
expectMsg(T obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllClassOf(scala.concurrent.duration.FiniteDuration max,
scala.collection.Seq<java.lang.Class<? extends T>> obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllClassOf(scala.collection.Seq<java.lang.Class<? extends T>> obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllConformingOf(scala.concurrent.duration.FiniteDuration max,
scala.collection.Seq<java.lang.Class<? extends T>> obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllConformingOf(scala.collection.Seq<java.lang.Class<? extends T>> obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllOf(scala.concurrent.duration.FiniteDuration max,
scala.collection.Seq<T> obj) |
static <T> scala.collection.immutable.Seq<T> |
expectMsgAllOf(scala.collection.Seq<T> obj) |
static <C> C |
expectMsgAnyClassOf(scala.concurrent.duration.FiniteDuration max,
scala.collection.Seq<java.lang.Class<? extends C>> obj) |
static <C> C |
expectMsgAnyClassOf(scala.collection.Seq<java.lang.Class<? extends C>> obj) |
static <T> T |
expectMsgAnyOf(scala.concurrent.duration.FiniteDuration max,
scala.collection.Seq<T> obj) |
static <T> T |
expectMsgAnyOf(scala.collection.Seq<T> obj) |
static <C> C |
expectMsgClass(java.lang.Class<C> c) |
static <C> C |
expectMsgClass(scala.concurrent.duration.FiniteDuration max,
java.lang.Class<C> c) |
static <T> T |
expectMsgPF(scala.concurrent.duration.Duration max,
java.lang.String hint,
scala.PartialFunction<java.lang.Object,T> f) |
static <T> scala.concurrent.duration.Duration |
expectMsgPF$default$1() |
static <T> java.lang.String |
expectMsgPF$default$2() |
static <T> T |
expectMsgType(scala.reflect.ClassTag<T> t) |
static <T> T |
expectMsgType(scala.concurrent.duration.FiniteDuration max,
scala.reflect.ClassTag<T> t) |
static void |
expectNoMsg() |
static void |
expectNoMsg(scala.concurrent.duration.FiniteDuration max) |
static Terminated |
expectTerminated(ActorRef target,
scala.concurrent.duration.Duration max) |
static scala.concurrent.duration.Duration |
expectTerminated$default$2() |
static java.lang.Object |
fishForMessage(scala.concurrent.duration.Duration max,
java.lang.String hint,
scala.PartialFunction<java.lang.Object,java.lang.Object> f) |
static scala.concurrent.duration.Duration |
fishForMessage$default$1() |
static java.lang.String |
fishForMessage$default$2() |
static void |
ignoreMsg(scala.PartialFunction<java.lang.Object,java.lang.Object> f) |
static void |
ignoreNoMsg() |
static void |
lastMessage_$eq(TestActor.Message x$1) |
TestActor.Message |
lastMessage() |
static ActorRef |
lastSender() |
static boolean |
msgAvailable() |
static scala.concurrent.duration.Duration |
now()
Obtain current timestamp as Duration for relative measurements (using System.nanoTime).
|
static scala.collection.immutable.Seq<java.lang.Object> |
receiveN(int n) |
static scala.collection.immutable.Seq<java.lang.Object> |
receiveN(int n,
scala.concurrent.duration.FiniteDuration max) |
static java.lang.Object |
receiveOne(scala.concurrent.duration.Duration max) |
static <T> scala.collection.immutable.Seq<T> |
receiveWhile(scala.concurrent.duration.Duration max,
scala.concurrent.duration.Duration idle,
int messages,
scala.PartialFunction<java.lang.Object,T> f) |
static <T> scala.concurrent.duration.Duration |
receiveWhile$default$1() |
static <T> scala.concurrent.duration.Duration |
receiveWhile$default$2() |
static <T> int |
receiveWhile$default$3() |
static scala.concurrent.duration.FiniteDuration |
remaining() |
static scala.concurrent.duration.FiniteDuration |
remainingOr(scala.concurrent.duration.FiniteDuration duration) |
static scala.concurrent.duration.FiniteDuration |
remainingOrDefault() |
static void |
setAutoPilot(TestActor.AutoPilot pilot) |
static void |
shutdown(ActorSystem actorSystem,
scala.concurrent.duration.Duration duration,
boolean verifySystemShutdown) |
static ActorSystem |
shutdown$default$1() |
static scala.concurrent.duration.Duration |
shutdown$default$2() |
static boolean |
shutdown$default$3() |
static void |
shutdownActorSystem(ActorSystem actorSystem,
scala.concurrent.duration.Duration duration,
boolean verifySystemShutdown)
Shut down an actor system and wait for termination.
|
ActorSystem |
system() |
ActorRef |
testActor()
ActorRef of the test actor.
|
static java.util.concurrent.atomic.AtomicInteger |
testActorId() |
protected static java.lang.String |
testActorName() |
TestKitSettings |
testKitSettings() |
static ActorRef |
unwatch(ActorRef ref) |
static ActorRef |
watch(ActorRef ref) |
static <T> T |
within(scala.concurrent.duration.FiniteDuration min,
scala.concurrent.duration.FiniteDuration max,
scala.Function0<T> f) |
static <T> T |
within(scala.concurrent.duration.FiniteDuration max,
scala.Function0<T> f) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
awaitAssert, awaitCond, checkMissingAndUnexpected, childActorOf, childActorOf, childActorOf, childActorOf, expectMsg_internal, expectMsg, expectMsg, expectMsg, expectMsgAllClassOf, expectMsgAllClassOf, expectMsgAllConformingOf, expectMsgAllConformingOf, expectMsgAllOf_internal, expectMsgAllOf, expectMsgAllOf, expectMsgAnyClassOf_internal, expectMsgAnyClassOf, expectMsgAnyClassOf, expectMsgAnyOf_internal, expectMsgAnyOf, expectMsgAnyOf, expectMsgClass_internal, expectMsgClass, expectMsgClass, expectMsgPF, expectMsgType, expectMsgType, expectNoMsg_internal, expectNoMsg, expectNoMsg, expectTerminated, fishForMessage, format, ignoreMsg, ignoreNoMsg, internalExpectMsgAllClassOf, internalExpectMsgAllConformingOf, lastSender, msgAvailable, now, receiveN_internal, receiveN, receiveN, receiveOne, receiveWhile, remaining, remainingOr, remainingOrDefault, remainingOrDilated, setAutoPilot, shutdown, testActorName, unwatch, watch, within, within
public TestKit(ActorSystem _system)
public static java.util.concurrent.atomic.AtomicInteger testActorId()
public static boolean awaitCond(scala.Function0<java.lang.Object> p, scala.concurrent.duration.Duration max, scala.concurrent.duration.Duration interval, boolean noThrow)
true
or the timeout
expires, whichever comes first.p
- (undocumented)max
- (undocumented)interval
- (undocumented)noThrow
- (undocumented)public static scala.concurrent.duration.Duration now()
public static void shutdownActorSystem(ActorSystem actorSystem, scala.concurrent.duration.Duration duration, boolean verifySystemShutdown)
If verifySystemShutdown is true, then an exception will be thrown on failure.
actorSystem
- (undocumented)duration
- (undocumented)verifySystemShutdown
- (undocumented)public static java.util.concurrent.LinkedBlockingDeque<TestActor.Message> akka$testkit$TestKitBase$$queue()
public static void lastMessage_$eq(TestActor.Message x$1)
public static ActorRef lastSender()
protected static java.lang.String testActorName()
public static scala.concurrent.duration.Duration akka$testkit$TestKitBase$$end()
public static void akka$testkit$TestKitBase$$end_$eq(scala.concurrent.duration.Duration x$1)
public static boolean akka$testkit$TestKitBase$$lastWasNoMsg()
public static void akka$testkit$TestKitBase$$lastWasNoMsg_$eq(boolean x$1)
public static void ignoreMsg(scala.PartialFunction<java.lang.Object,java.lang.Object> f)
public static void ignoreNoMsg()
public static void setAutoPilot(TestActor.AutoPilot pilot)
public static scala.concurrent.duration.FiniteDuration remainingOrDefault()
public static scala.concurrent.duration.FiniteDuration remaining()
public static scala.concurrent.duration.FiniteDuration remainingOr(scala.concurrent.duration.FiniteDuration duration)
public static boolean msgAvailable()
public static void awaitAssert(scala.Function0<java.lang.Object> a, scala.concurrent.duration.Duration max, scala.concurrent.duration.Duration interval)
public static <T> T within(scala.concurrent.duration.FiniteDuration min, scala.concurrent.duration.FiniteDuration max, scala.Function0<T> f)
public static <T> T within(scala.concurrent.duration.FiniteDuration max, scala.Function0<T> f)
public static <T> T expectMsg(T obj)
public static <T> T expectMsg(scala.concurrent.duration.FiniteDuration max, T obj)
public static <T> T expectMsg(scala.concurrent.duration.FiniteDuration max, java.lang.String hint, T obj)
public static <T> T expectMsgPF(scala.concurrent.duration.Duration max, java.lang.String hint, scala.PartialFunction<java.lang.Object,T> f)
public static Terminated expectTerminated(ActorRef target, scala.concurrent.duration.Duration max)
public static java.lang.Object fishForMessage(scala.concurrent.duration.Duration max, java.lang.String hint, scala.PartialFunction<java.lang.Object,java.lang.Object> f)
public static <T> T expectMsgType(scala.reflect.ClassTag<T> t)
public static <T> T expectMsgType(scala.concurrent.duration.FiniteDuration max, scala.reflect.ClassTag<T> t)
public static <C> C expectMsgClass(java.lang.Class<C> c)
public static <C> C expectMsgClass(scala.concurrent.duration.FiniteDuration max, java.lang.Class<C> c)
public static <T> T expectMsgAnyOf(scala.collection.Seq<T> obj)
public static <T> T expectMsgAnyOf(scala.concurrent.duration.FiniteDuration max, scala.collection.Seq<T> obj)
public static <C> C expectMsgAnyClassOf(scala.collection.Seq<java.lang.Class<? extends C>> obj)
public static <C> C expectMsgAnyClassOf(scala.concurrent.duration.FiniteDuration max, scala.collection.Seq<java.lang.Class<? extends C>> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllOf(scala.collection.Seq<T> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllOf(scala.concurrent.duration.FiniteDuration max, scala.collection.Seq<T> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllClassOf(scala.collection.Seq<java.lang.Class<? extends T>> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllClassOf(scala.concurrent.duration.FiniteDuration max, scala.collection.Seq<java.lang.Class<? extends T>> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllConformingOf(scala.collection.Seq<java.lang.Class<? extends T>> obj)
public static <T> scala.collection.immutable.Seq<T> expectMsgAllConformingOf(scala.concurrent.duration.FiniteDuration max, scala.collection.Seq<java.lang.Class<? extends T>> obj)
public static void expectNoMsg()
public static void expectNoMsg(scala.concurrent.duration.FiniteDuration max)
public static <T> scala.collection.immutable.Seq<T> receiveWhile(scala.concurrent.duration.Duration max, scala.concurrent.duration.Duration idle, int messages, scala.PartialFunction<java.lang.Object,T> f)
public static scala.collection.immutable.Seq<java.lang.Object> receiveN(int n)
public static scala.collection.immutable.Seq<java.lang.Object> receiveN(int n, scala.concurrent.duration.FiniteDuration max)
public static java.lang.Object receiveOne(scala.concurrent.duration.Duration max)
public static void shutdown(ActorSystem actorSystem, scala.concurrent.duration.Duration duration, boolean verifySystemShutdown)
public static ActorRef childActorOf(Props props, java.lang.String name, SupervisorStrategy supervisorStrategy)
public static ActorRef childActorOf(Props props, SupervisorStrategy supervisorStrategy)
public static scala.concurrent.duration.Duration awaitCond$default$2()
public static scala.concurrent.duration.Duration awaitCond$default$3()
public static java.lang.String awaitCond$default$4()
public static scala.concurrent.duration.Duration awaitAssert$default$2()
public static scala.concurrent.duration.Duration awaitAssert$default$3()
public static <T> scala.concurrent.duration.Duration expectMsgPF$default$1()
public static <T> java.lang.String expectMsgPF$default$2()
public static scala.concurrent.duration.Duration expectTerminated$default$2()
public static scala.concurrent.duration.Duration fishForMessage$default$1()
public static java.lang.String fishForMessage$default$2()
public static <T> scala.concurrent.duration.Duration receiveWhile$default$1()
public static <T> scala.concurrent.duration.Duration receiveWhile$default$2()
public static <T> int receiveWhile$default$3()
public static ActorSystem shutdown$default$1()
public static scala.concurrent.duration.Duration shutdown$default$2()
public static boolean shutdown$default$3()
protected abstract static void akka$testkit$TestKitBase$_setter_$testKitSettings_$eq(TestKitSettings x$1)
protected abstract static void akka$testkit$TestKitBase$_setter_$akka$testkit$TestKitBase$$queue_$eq(java.util.concurrent.LinkedBlockingDeque<TestActor.Message> x$1)
protected abstract static void akka$testkit$TestKitBase$_setter_$testActor_$eq(ActorRef x$1)
public TestKitSettings testKitSettings()
testKitSettings
in interface TestKitBase
public TestActor.Message lastMessage()
lastMessage
in interface TestKitBase
public ActorRef testActor()
TestKitBase
testActor
in interface TestKitBase
public ActorSystem system()
system
in interface TestKitBase