2

デフォルトの代わりにFakeApplicationmy を使用してテストを実行するを作成するにはどうすればよいですか?dev.confapplication.conf

私の現在のテストは、次の構成要素で構成されています。

Map<String, String> map = new HashMap<>();
map.put("config.file", "/path/to/dev.conf");
FakeApplication fakeApplication = fakeApplication(map);
TestServer testServer = testServer(3333, fakeApplication);
// testServer.start();
running(testServer, HTMLUNIT, new F.Callback<TestBrowser>() {
    public void invoke(TestBrowser browser) {
        //do something
    }
});

私の開発システムではデフォルトが機能しないため、テストの記述に関する Play フレームワークのドキュメントから適用されたこのコードは、次の例外をスローします。application.confコメントを外すtestServer.start();と、さらにはっきりと見ることができます。

[WARN] [01/01/2013 18:36:59.505] [pool-4-thread-3] [Dispatchers] Dispatcher [akka.actor.promises-dispatcher] not configured, using default-dispatcher
[WARN] [01/01/2013 18:36:59.521] [play-akka.actor.default-dispatcher-2] [Dispatchers] Dispatcher [akka.actor.actions-dispatcher] not configured, using default-dispatcher
[error] Test test.ApplicationTest.runInBrowser failed: Server is not started!
[error]     at scala.sys.package$.error(package.scala:27)
[error]     at play.api.test.TestServer.stop(Selenium.scala:117)
[error]     at play.test.Helpers.stop(Helpers.java:325)
[error]     at play.test.Helpers.running(Helpers.java:355)
[error]     at test.ApplicationTest.runInBrowser(ApplicationTest.java:74)
[error]     ...

私はラインを仮定します

map.put("config.file", "/path/to/dev.conf");

は間違っており、適応させる必要があります。しかし、どのように?

4

4 に答える 4

9

この方法でメイン設定を別の設定に置き換えることはできません。マップをに渡すことによってのみ、特定の設定を上書きできますfakeApplication

つまり、構成に次のものが含まれている場合:

mongodb.default.uri = ...
logger.root = ERROR

マップ内に新しい値を配置することで、これをオーバーライドできます。

Map<String, String> map = new HashMap<>();
map.put("mongodb.default.uri", "...");
map.put("logger.root", "INFO");

FakeApplication fakeApplication = fakeApplication(map);
于 2013-01-02T04:18:31.093 に答える
0

このオプションをチェックアウトすることもできます。

http://alexgaribay.com/2015/02/05/overwrite-settings-for-testing-in-play-framework/

于 2016-01-06T10:20:00.467 に答える
0

私は同じ問題を抱えており、それを解決するために次のようなことをしました:

  private Configuration additionalConfigurations;

  @Before
  public void initialize() {
    ClassLoader cl = ClassLoader.getSystemClassLoader();
    Config additionalConfig  =ConfigFactory.parseFile(newFile(cl.getResource("application.dev.conf").getF)));
    additionalConfigurations = new Configuration(additionalConfig);
  }
  @Test
  public void testPropertiesGetLoaded() throws Exception{

    running(testServer(3333, fakeApplication(additionalConfigurations.asMap())), HTMLUNIT, new F.Callback<TestBrowser>(){
      public void invoke(TestBrowser browser) throws InterruptedException {

        String specificProperty = Play.application().configuration().getString("db.ro.url");
        Logger.info("printingVar:" + specificProperty);

      }
    });
  }

application.dev.conf は、そこに設定したい任意の構成ファイルにすることができます。

于 2016-09-30T22:25:47.550 に答える