2

スイート内の各テスト用に設定する必要がある変数がいくつかある場合、テストごとにスイートを作成せずに、何らかの方法でそれらを設定してテストに入れることは可能ですか?

つまり、セットアップ:

val actorRef = context.actorOf(Props(new MyTestDude))

取り壊す:

actorRef ! PoisonPill

セットアップ フックとティアダウン フックを使用して実行する場合、actorref をテスト クラスのフィールドとして持つ必要があるため、セットアップ メソッドからアクセスできますが、全員が同じ状態を共有するため、テストを並行して実行することはできません。

4

2 に答える 2

2

Scalatest では、スイートのすべてのサブクラスにこれを処理する何らかの方法があり、特定のスイート クラスの Scaladoc で詳細に説明されています。

ドキュメントに基づいて、FunSuite を使用した例を次に示します。http://www.artima.com/docs-scalatest-2.0.M5b/#org.scalatest.FunSuite

class ExampleSuite extends fixture.FunSuite {

  case class F(actorRef: ActorRef)
  type FixtureParam = F

  def withFixture(test: OneArgTest) {

    val actorRef = context.actorOf(Props(new MyTestDude))
    val fixture = F(actorRef)

    try {
      withFixture(test.toNoArgTest(fixture)) // "loan" the fixture to the test
    }
    finally {
      actorRef ! PoisonPill
    }
  }

  test("My actor rules!") { f =>
    f.actorRef ! "very important message"
    assert( ... )
  }
}

また、Akka には TestKit と呼ばれる ScalaTest 用の特別なモジュールがあり、一般的なアクターのテストがはるかに簡単になることにも注意してください。http://doc.akka.io/docs/akka/snapshot/scala/testing.html

于 2013-04-25T00:41:57.397 に答える