1

我想编写一个使用 Akka 演员并从 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 演员在测试套件中正确运行?

4

1 回答 1

2

如果您使用 Prop[X],则 X 需要使用 newInstance 进行实例化,如果您在方法内部声明它则不是。

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

于 2012-01-22T16:26:27.397 回答