私は現在、プレイアプリケーションのJUnitテストを作成しています。FakeApplication を使用しようとすると問題が発生します。JUnit テストで作成しますが、テストで fakeApplication インスタンスを使用すると、次のようになります。
[error] Test controllers.MyClassTest.getMyProperty failed: play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
JUnit テスト クラスの Java コードは次のとおりです。
...
@BeforeClass
public static void startFakeApplication() {
Map<String, String> settings = new HashMap<String, String>();
settings.put("db.default.url", "jdbc:mysql://myhost/releaseDB?characterEncoding=UTF-8");
settings.put("db.default.driver", "com.mysql.jdbc.Driver");
settings.put("db.default.user", "release");
settings.put("db.default.password", "release");
settings.put("db.default.jndiName", "DefaultDS");
Helpers.start(fakeApplication);
}
...
次に、テストする私の方法(ダミーの実行に注意してください。問題が発生することはありません):
...
public void getMyProperty() {
Helpers.running (fakeApplication, new Runnable() {
public void run() {
}
});
}
...
問題はデータベース接続の問題だと思います。もちろん、実行モードでプレイを実行しているときは、すべて問題ありません。FakeApplication を使用しない場合でも問題ありませんが、必要です。startFakeApplication メソッドのすべてのデータベース情報は conf/application.conf から取得されているため、正しいです。
奇妙なのは、テストの実行時に出力画面に次の行も表示されることです。
[info] play - datasource [jdbc:mysql://myhost/releaseDB?characterEncoding=UTF-8] bound to JNDI as DefaultDS
ここで重要なことを見逃しましたか?どうも