LoginSignup
4
5

More than 5 years have passed since last update.

PlayFrameworkのfunctional test

Last updated at Posted at 2015-09-25

公式サイトのFunctionalTestのサンプルコードは実践ではちょっと辛いと思ったので、その改良版を編み出したメモ。

基底クラスでTestServerの起動・停止、TestBrowserの生成を、@BeforeClass@AfterClassでやると、書きやすくなる。もとがFluentLeniumなので、そこのサンプルコードに寄せたということ。

基底クラス

TestBase.java

public class TestBase {

    protected static TestServer testServer;

    public static TestBrowser browser;

    protected static int PORT = 1111;

    public static final String baseUrl = "http://localhost:" + PORT;

    @BeforeClass
    public static void startTestServer() {
        browser = testBrowser();
        testServer = testServer(PORT);
        start(testServer);
    }

    @AfterClass
    public static void stopTestServer() {
        stop(testServer);
    }
}

テストコードのサンプル

SampleTest.java

public class SampleTest extends TestBase {

    @Test
    public void ログインページが表示される() {
        browser.goTo(baseUrl + "/login");

        assertThat(browser.title()).isEqualTo("ログイン");
    }

    @Test
    public void ログインできる() {
            browser.goTo(baseUrl + "/login")
                .fill("input[name='id']").with("123")
                .fill("input[name='password']").with("password")
                .click("input[name='login']");

              browser.await().atMost(10 * 1000);

              assertThat(browser.title()).isEqualTo("ホーム");
    }

}

まとめ

こうすると、ブラウザ操作をしてその結果をassertionする、というのがはっきりできた。
ブラウザ操作も、直感的に書けるし、継承していくことでテストクラスを簡単に増やしていける。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5