はぶあぶれーく

IT技術の勉強に関して記録していく備忘録的なものです。

FluentLeniumで自動テストを用意する「前」に迷った話

E2EのテストにFluentLeniumを使いたいと思っているんですが、どんなふうに導入すれば良いかわからず困りました。

 

テスト対象

 

具体的に何を迷っているかというと

  • テスト対象とは別プロジェクトでFluentLeniumだけを動かすプロジェクトを作る
  • テスト対象と同じプロジェクトで単体テストと同じパッケージに作る

このどっちにすれば良いんだろう。で迷っています。

実は前いた現場では前者で実装しておりました。しかし、どっちが一般的というか、正しいお作法というか、そういうのがわかりません。

 

別プロジェクトで作る場合

想定するパターンがいくつかあって、1つはリポジトリ直下にプロジェクト2つ置いちゃう。

project

     ┣ product

     ┃     ┗ build.gradle

     ┗ e2e-test

              ┗ build.gradle

こんな感じかな。(だれかパッケージ構成をブログで簡単に書ける方法を教えてほしい)

この場合、Gitで落としてきてIDEでプロジェクトimportするときは producte2e-test を両方importしないといけない。(ちょっとめんどくさい)

 

もう1つは、Gradleでマルチプロジェクトにしちゃう。

project

     ┣ product

     ┃     ┗ build.gradle

      e2e-test

          ┗ build.gradle

     ┗ build.gradle

これは project ごとimportしたらsubprojectもimportできるのでいける。と思う。

Gradleでのマルチプロジェクトはまだ勉強中でわからないことが多い。

ただ、productはマルチプロジェクトじゃないのになーとは思う。

同じプロジェクトで作る場合

project

      product

           ┣ main

           ┣ test 

           ┃     ┣ unit

                ┗ e2e ←ここに置く

           ┗ build.gradle

この場合は、TDDで開発する際に、気軽に全テスト実行できないんじゃないかという不安がある。

パッケージさえ分けておけば問題ないのかも知れないけれど。(Ctrl+S押したくなるタイミングでunitの全テストして、コミットしたくなるタイミングでe2e含む全テスト動かすみたいな)

あとは、CIどうしよ。unitだけciでテストできる設定とかあるんだろうか。その辺も詳しくないので要調査。

結論

わからない。

ドキュメントとかSampleとか見てたら後者が多い気がするなーという感。

ただ、前の現場で前者でやってて特に不便は感じなかった。

今回は後者でやってみて知見が得られたらここに書くことにする。

一応、後者でやっていく上での想定を書いておく。

メリット
  • マルチプロジェクトにする必要がない(今ある知識でいけそう、importどうこうも気にしなくて良い)
デメリット
  • うっかり全テスト流してしまって慌てて止めて残念な気持ちになるかもしれない
  • CIどうしよ(今ある知識では無理かもしれない)