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

More than 3 years have passed since last update.

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のプラグインのソースコードです。興味がある人は覗いてみてもいいかも。


参考資料


公式ドキュメント


スライド