LoginSignup
5
4

More than 5 years have passed since last update.

GebでIDEでの補完を効かせる

Posted at

Gebで補完効かなくて苦しんでる人が観測範囲で結構多いので、GebでIDEの力を借りる方法書きます。
Gebのバージョンは0.13.1で試しています。

やり方は二つで

  • 省略を使わない
  • IntelliJ IDEA使う

です。

省略を使わない

GebはGroovyの機能を使って記述を省略し、完結にすることがウリの一つです

省略する.groovy
def "ログインして新着情報を確認する"() {
    when: 'サンプルページの表示'
    to SignInPage
    at SignInPage

    and: 'ユーザー名とパスワードを入力して'
    signIn "SAMPLE_USER", "SAMPLE_PASSWORD"

    // 略
}

ただ、上記のように書くとIDEでの補完はほぼ効きません。
というわけで、記述を省略せず、シンタックスを明示してあげると補完が効くようになります。

明示する.groovy
def "ログインして新着情報を確認する"() {
    when: 'サンプルページの表示'
    SignInPage signInPage = browser.to SignInPage // 左辺の型と変数名を明示。右辺のbrowserも明示。
    browser.at SignInPage // browserを明示

    and: 'ユーザー名とパスワードを入力して'
    MainPage mainPage = signIn.signIn "SAMPLE_USER", "SAMPLE_PASSWORD" // ページオブジェクトの型を明示

    // 略
}

上記のように書くと、明示した型については補完が効くようになります。
簡潔さを取るか、IDEの補完を取るか、というトレードオフになりますが、それは実際に携わる人やチームの状況などで決めればよいかな、と思います。

IntelliJ IDEAつかう

IntellJ IDEAはもう少し空気読んでくれます。

  • browserに定義されている、toatの後のページオブジェクトの補完ができる(GebSpecを継承しているものに限る)
  • PageModule内で、どうファイル内に定義されているコンテンツをメソッドなどで呼び出すときに補完が効く

です。

GebのTwitterアカウントが、なぜこれができるのか、というのに言及していました。

ツイート内のリンク先はIDEAのプラグインのソースコードです。興味がある人は覗いてみてもいいかも。

参考資料

公式ドキュメント

スライド

5
4
1

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
5
4