2

私は現在、プレイアプリケーションの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

ここで重要なことを見逃しましたか?どうも

4

2 に答える 2

0

設定マップを fakeApplication のどこかに渡していますか? 何かのようなもの:

FakeApplication fakeApplication = fakeApplication(settings);

別のオプションとして、別のapplication-test.confファイルを作成し、ファイルに次の内容を含めることもbuild.sbtできます。

javaOptions in Test ++= Seq(
  "-Dconfig.file=conf/application-test.conf"
)
于 2014-05-07T18:58:00.887 に答える