いくつかの Selenium テストを Play のテスト フレームワークに統合し始めました。に対して多くの特別な構成設定を定義し、次を使用してFakeApplication
作成するクラスがあります。FakeApplication
public abstract class FakeApplicationTest {
public static FakeApplication createFakeApp() {
// grab the main application.conf file that is used to start up the Play application
Config config = ConfigFactory.parseFile(new File("conf/application.conf"));
// resolve all variables within this config file with other variables within itself
config = ConfigFactory.load(config);
// create a Configuration object out of this and then turn it into a Map to be modified
Configuration configuration = new Configuration(config);
Map<String, Object> fakeApplicationConf = Maps.newHashMap(configuration.asMap());
...
// CUSTOM CONFIG THINGS HERE
...
return Helpers.fakeApplication(fakeApplicationConf);
}
}
私ができるようにしたいのは、 this を使用し、 (JUnit 4 を使用して) メソッドFakeApplication
で開始し、Selenium テストを実行するために必要な に既に実行されているものを渡すことです。@Before
FakeApplication
TestServer
public class Checkout extends FluentTest {
public WebDriver webDriver = new FirefoxDriver();
...
public FakeApplication app;
@Before
public void beforeTest() {
app = FakeApplicationTest.createFakeApp();
Helpers.start(app);
FakeApplicationTest.createCleanDb();
...
}
@Test
public void testReviewPage()
running(testServer(3333, app), webDriver, browser -> {
...
}
}
}
ただし、これを行うと発生するように見えるのは、既存の実行中FakeApplication
が無視/破棄され、カスタムの fakeApplicationConf マップで設定されていないFakeApplication
新しいものが作成されて開始されることです...または、アプリを停止して再起動しますが、デフォルトのapplication.confのみを使用するように戻します。
これがなぜなのかについてのアイデアはありますか?または、どうにかしてこれを別の方法で達成できるとしたら?