Scaltest を使用して Play Framework 2.1 テスト スイートでデータベースをセットアップおよび破棄しようとしています。
実際にセットアップしました
running(FakeApplication()){
}
しかし、個々のテストの前にデータベースをセットアップしたいと思います.Scalatestについての私の理解から、これを行うことができます
override def beforeEach(){
}
そのため、内部からいくつかの Squeryl クエリを実行しようとしたところ、セッションが閉じられているというエラーが発生しました。
そこで、beforeEach メソッド内でセッションを作成しようとしました。
override def beforeEach(){
import org.squeryl.SessionFactory
Class.forName("org.postgresql.Driver").newInstance()
// classOf[org.postgresql.Driver]
DriverManager.registerDriver(new org.postgresql.Driver)
val props = new Properties()
props.setProperty("user","db")
props.setProperty("password","db")
SessionFactory.concreteFactory = Some(()=>
Session.create(
java.sql.DriverManager.getConnection("jdbc:postgresql://127.0.0.1/db", props),
new PostgreSqlAdapter))
CloudUsers.truncateUsers()
Servers.truncateServers()
}
これでセッション エラーは解消されましたが、次のようになりました。
Could not run test Controllers.UserTest: java.lang.ExceptionInInitializerError
Throwable escaped the test run of 'Controllers.UserTest': java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
....
Caused by: java.lang.RuntimeException: There is no started application
簡単に言うと、Play で beforeEach セットアップ メソッドを実行できますか、それとも、各テストの先頭にブートストラップを追加するだけでよいのでしょうか?
ありがとう
トム