3.1.1 准备测试

开始前,我们需要做些准备来避免重复工作。 HelloWorld 的例子显示,一旦 actor 系统创建了,它就开始并不断运行,直到关闭。 我们构建一个小的特质,用在所有的测试中来保证测试中的系统在单元测试结束时会自动关闭。

列表 3.1 所有测试完成后,关闭系统

    import org.scalatest.{ Suite, BeforeAndAfterAll }
    import akka.testkit.TestKit

    trait StopSystemAfterAll extends BeforeAndAfterAll {
        this: TestKit with Suite =>
        override protected def afterAll() {
            super.afterAll()
            system.shutdown()
         }
    }
  • 从 ScalaTest 的特质 BeforeAndAfterAll 继承,
  • 该特质只能用在使用 TestKit 的测试中,
  • 当所有测试执行完后,关闭系统。

当我们写测试时,我们会 mixin(TODO) 该特质,所有测试执行完成后,系统会自动关闭。 TestKit 暴露系统值,测试中可以访问它来创建 actors,以及系统中的其他任何东西。

下一节中,我们使用 testkit 模块来测试一些常见的使用 actor 的场景,包括单线程的和多线程的。 actors 之间相互交互的方式只有有限的几种。我们会探索不同的选择,并测试用特定方式与 testkit 模块交互的方式。