1

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 セットアップ メソッドを実行できますか、それとも、各テストの先頭にブートストラップを追加するだけでよいのでしょうか?

ありがとう

トム

4

2 に答える 2

2

寝てから入れてみた

running(FakeApplication()) {
}

以内

override def beforeEach(){

}

これが Play フレームワークに与える影響があったとしても、それが何を意味するかはわかりませんが、今のところ仕事をしています。

于 2013-05-23T08:25:23.787 に答える