2014年7月11日金曜日

GradleがJUnitのテストを実行する時、どうやってテストクラスが選ばれるのか?

知らない。

が気になる。

スイートを作ってJUnitでシナリオテストをやっているのだが、順序良く実行される前提になっている(シナリオなだけに)ので、個別のテストをスイート以外から実行してほしくない。で、スイートは確実に実行してほしい。

ローカルではテストが全部通るのに、Gradleでやると不可解なNGが出るのはこのあたりに問題が隠れているのではないか、と。


結局、build.gradleに、

test {
include '**/Test*.*'
}
と書いて、TestXXXなテストだけ実行するようにした。
たぶん、これで意図通りに出来たと思う。テスト通ったし。

JUnit4はテストクラスの名前はどうでもいいわけなので、
スイートであれ単体であれ、Gradleに直接実行させたいのだけTestXXという名前にする、という単純なルールを守れば、配置や何かを気にしなくてもいいので楽じゃないかなと。

なお、「**」って何だよ、と思ったが、まあ大方の予想通り、こういうことだった。

Patterns may include:
  • '*' to match any number of characters
  • '?' to match any single character
  • '**' to match any number of directories or files

2014年7月10日木曜日

Jenkins, Git, BitBucket, Gradle

このあたりを参考にした。

http://www.atmarkit.co.jp/ait/articles/1403/14/news034_5.html

http://d.hatena.ne.jp/gungnir_odin/20120922/1348281247

http://futuremix.org/2005/10/openssh-config-permission

http://siosio.hatenablog.com/entry/2012/05/26/220858


以下、若干ハマったところ。

SSHの鍵生成時のconfigファイルは、パーミッション600にしておかないとつながらない。
鍵ファイルそのものも600にしておかないと警告が出る。

Jenkinの設定でGradleの設定をし、GRADLE_HOMEを設定しておかないとJenkinsがGradle動かせない。
Gradleの実行タスクをJenkinsで作る際は、シェルスクリプトじゃなくて専用のGradleのタスクで。

JUnitのテスト結果はレポートXMLのパスを指定(ワイルドカード)しておかないと表示されない。