WordSpec の一部としていくつかのテストがあります。Scaltest のドキュメントを読んだところ、これで一連のテストが作成されるはずです。HSQLDB は、このファイル内の各テスト ケースに対して再起動されています。
@RunWith(classOf[JUnitRunner])
class UserAgentTest extends WordSpec with BeforeAndAfterAll {
val userService: UserService = new UserServiceJpaImpl
var userAgent: ActorRef = _
var user: MutableUser = _
override def beforeAll(configMap: Map[String, Any]) {
TestUtil.deleteAllTestUsers()
user = TestUtil.createTestUser("joe")
user.cash = 500
user.exp = 10000
user.level = 10
userService.save(user)
userAgent = actorOf(new UserAgent(user.id)).start()
}
override def afterAll(configMap: Map[String, Any]) {
if (userAgent != null)
userAgent.stop()
}
"UserAgent" must {
"test 1..." in { ... }
"test 2..." in { ... }
}
}
その結果、beforeAll にロードされたテスト データがテスト 2 に存在しません。これを機能させるには、各テストの DB を初期化します (「beforeAll」ではなく「before」を使用)。これは、このような小さなテストでは問題になりませんが、後で問題になる可能性があります。これをMavenで実行しています(IDE内から実行すると問題が発生します)
また、「mvn test」を実行すると、すべてのテストに対して単一の HSQLDB インスタンスが作成されるように見えることにも気付きました (つまり、上記の例は成功します)。上記のテストを「mvn test -Dtest=UserAgentTest」として実行すると、失敗します (複数の HSQLDB インスタンスが作成されているように見えます)。
残念ながら、"mvn test" で実行すると、すべてのテスト スイートで単一の HSQLDB インスタンスが使用されるため、他のいくつかのテストが失敗します。
私の質問は、テスト スイートごとに HSQLDB の 1 つの (そして 1 つのみの) インスタンスを作成するためのテスト セットアップを取得するにはどうすればよいかということです。