0

我已经开始将一些 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。

关于为什么会这样的任何想法?或者如果我能以不同的方式实现这一点?

4

0 回答 0