Scalatest FunSuite和Akka演员

时间:2012-01-22 10:09:13

标签: scala actor akka scalatest

我想编写一个使用Akka actor并从sbt运行的ScalaTest测试套件。当我尝试这样做时:

class Tests extends FunSuite with BeforeAndAfterAll {
  override protected def beforeAll() {
    class Actor1 extends Actor {
      protected def receive = {
        case 1 => println("One")
      }
    }
    val sys = ActorSystem("my")
    val a = sys.actorOf(Props[Actor1], "plain_actor")
    a ! 1
    sys.shutdown()
  }
}

然后sbt test,我得到了

[ERROR] [01/22/2012 12:49:50.329] [default-dispatcher10] [akka://my/user/plain_actor] error while creating actor

但是当我在通常的主类而不是FunSuite中编写相同的代码,并通过sbt run运行它时,一切正常。这两种情况有什么区别?如何让Akka演员在测试套件中正确运行?

1 个答案:

答案 0 :(得分:2)

如果你使用Prop [X]那么X需要使用newInstance来实例化,如果你在方法内部声明它,那就不是。

在包或对象中定义Actor类,或使用Props(new Actor1)