我已经开始将一些 Selenium 测试集成到 Play 中的测试框架中。我有一个类,我在其中为 a 定义了许多特殊的配置设置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 FakeApplication
,在一个方法中启动它@Before
(使用 JUnit 4),然后将已经运行FakeApplication
的那个传递TestServer
给运行 Selenium 测试所需的那个。
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
被忽略/扔掉,并FakeApplication
创建并启动了一个新的,它不是使用我的自定义 fakeApplicationConf Map 设置的......或者,它正在停止应用程序并重新启动它但是去回到只使用我的默认application.conf。
关于为什么会这样的任何想法?或者如果我能以不同的方式实现这一点?